Re: Adding Two button

Tech-Archive recommends: Fix windows errors by optimizing your registry



Hi,
Please ignore this problem. I have solved it. Thanks for your help.

Thanks,
Kannan

"Kannan" wrote:

Here is my full Code: I have commented my new button ForwardButton.

Thanks for your help....

Kannan.

namespace MyCOMAddin1
{
using System;
using Microsoft.Office.Core;
using Extensibility;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Windows.Forms;


#region Read me for Add-in installation and setup information.
// When run, the Add-in wizard prepared the registry for the Add-in.
// At a later time, if the Add-in becomes unavailable for reasons such as:
// 1) You moved this project to a computer other than which is was
originally created on.
// 2) You chose 'Yes' when presented with a message asking if you wish to
remove the Add-in.
// 3) Registry corruption.
// you will need to re-register the Add-in by building the MyAddin21Setup
project
// by right clicking the project in the Solution Explorer, then choosing
install.
#endregion

/// <summary>
/// The object for implementing an Add-in.
/// </summary>
/// <seealso class='IDTExtensibility2' />
[GuidAttribute("1672C7A6-0014-4DA6-930B-83859D338C5F"),
ProgId("MyCOMAddin1.Connect")]
public class Connect : Object, Extensibility.IDTExtensibility2
{
/// <summary>
/// Implements the constructor for the Add-in object.
/// Place your initialization code within this method.
/// </summary>
private CommandBarButton MyButton;
private CommandBarButton ForwardButton;

public Connect()
{



}

/// <summary>
/// Implements the OnConnection method of the IDTExtensibility2
interface.
/// Receives notification that the Add-in is being loaded.
/// </summary>
/// <param term='application'>
/// Root object of the host application.
/// </param>
/// <param term='connectMode'>
/// Describes how the Add-in is being loaded.
/// </param>
/// <param term='addInInst'>
/// Object representing this Add-in.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnConnection(object application, Extensibility.ext_ConnectMode
connectMode, object addInInst, ref System.Array custom)
{

applicationObject = application;
addInInstance = addInInst;

if(connectMode != Extensibility.ext_ConnectMode.ext_cm_Startup)
{
OnStartupComplete(ref custom);
}
}

/// <summary>
/// Implements the OnDisconnection method of the IDTExtensibility2
interface.
/// Receives notification that the Add-in is being unloaded.
/// </summary>
/// <param term='disconnectMode'>
/// Describes how the Add-in is being unloaded.
/// </param>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnDisconnection(Extensibility.ext_DisconnectMode
disconnectMode, ref System.Array custom)
{
if(disconnectMode != Extensibility.ext_DisconnectMode.ext_dm_HostShutdown)
{
OnBeginShutdown(ref custom);
}
applicationObject = null;
}

/// <summary>
/// Implements the OnAddInsUpdate method of the IDTExtensibility2
interface.
/// Receives notification that the collection of Add-ins has changed.
/// </summary>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnAddInsUpdate(ref System.Array custom)
{
}

/// <summary>
/// Implements the OnStartupComplete method of the IDTExtensibility2
interface.
/// Receives notification that the host application has completed
loading.
/// </summary>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnStartupComplete(ref System.Array custom)
{
CommandBars oCommandBars;
CommandBar oStandardBar;

try
{
oCommandBars =
(CommandBars)applicationObject.GetType().InvokeMember("CommandBars",
BindingFlags.GetProperty , null, applicationObject ,null);
}
catch(Exception)
{
// Outlook has the CommandBars collection on the Explorer object.
object oActiveExplorer;
oActiveExplorer=
applicationObject.GetType().InvokeMember("ActiveExplorer",BindingFlags.GetProperty,null,applicationObject,null);
oCommandBars=
(CommandBars)oActiveExplorer.GetType().InvokeMember("CommandBars",BindingFlags.GetProperty,null,oActiveExplorer,null);
}

// Set up a custom button on the "Standard" commandbar.
try
{
oStandardBar = oCommandBars["Standard"];
}
catch(Exception)
{
// Access names its main toolbar Database.
oStandardBar = oCommandBars["Database"];
}

// In case the button was not deleted, use the exiting one.
try
{
MyButton = (CommandBarButton)oStandardBar.Controls["Process Contacts"];
//ForwardButton = (CommandBarButton)oStandardBar.Controls["Forward Mail"];
}
catch(Exception)
{
object omissing = System.Reflection.Missing.Value ;
MyButton = (CommandBarButton) oStandardBar.Controls.Add(1, omissing ,
omissing , omissing , omissing);
//ForwardButton = (CommandBarButton) oStandardBar.Controls.Add(2,
omissing , omissing , omissing , omissing);

MyButton.Caption = "Process Contacts";
MyButton.Style = MsoButtonStyle.msoButtonCaption;
}

// The following items are optional, but recommended.
//The Tag property lets you quickly find the control
//and helps MSO keep track of it when more than
//one application window is visible. The property is required
//by some Office applications and should be provided.
MyButton.Tag = "Process Contacts";
//ForwardButton.Tag = "Forward Mail";

// The OnAction property is optional but recommended.
//It should be set to the ProgID of the add-in, so that if
//the add-in is not loaded when a user presses the button,
//MSO loads the add-in automatically and then raises
//the Click event for the add-in to handle.
MyButton.OnAction = "!<MyCOMAddin1.Connect>";
//ForwardButton.OnAction = "!<MyCOMAddin.Connect>";

MyButton.Visible = true;

//ForwardButton.Visible = true;
MyButton.Click += new
Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);
//ForwardButton.Click += new
Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.ForwardMail_Click);


object oName =
applicationObject.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,applicationObject,null);

// Display a simple message to show which application you started in.
System.Windows.Forms.MessageBox.Show("This Addin is loaded by " +
oName.ToString() , "MyCOMAddin");
oStandardBar = null;
oCommandBars = null;

}

/// <summary>
/// Implements the OnBeginShutdown method of the IDTExtensibility2
interface.
/// Receives notification that the host application is being unloaded.
/// </summary>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnBeginShutdown(ref System.Array custom)
{
object omissing = System.Reflection.Missing.Value ;
MyButton.Delete(omissing);
//ForwardButton.Delete(omissing);
MyButton = null;
//ForwardButton = null;
}

private void MyButton_Click(CommandBarButton cmdBarbutton,ref bool cancel)
{
MessageBox.Show("Final Version","MyCOMAddin");
}

// private void ForwardMail_Click(CommandBarButton cmdBarbutton,ref bool
cancel)
// {
// MessageBox.Show("Forward Button clicked");
// }


private object applicationObject;
private object addInInstance;
}
}

"Morten Wennevik" wrote:

Hi Kannan,

It will help immensly if you could show us your code, or at least the
difference between your code and the msdn code


On Mon, 09 Oct 2006 14:31:02 +0200, Kannan
<Kannan@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:

Hi,
I am trying to created Outloook Add-in Com in outlook using C#.
I have seen this URL for developing this sample

http://support.microsoft.com/?kbid=302901

When I executed this program it created new custom button called "My
Custom
Button" in the Outlook menu bar.

But when I tried to create one more button called "Forward Mail" (code is
very similar to "My custom button" code) but it is not displaying in
outlook.
Anybody knows that what I am doing wrong.

Sorry I am new to C# and outlook.

Thanks in advance.

kannan.



--
Happy Coding!
Morten Wennevik [C# MVP]

.


Quantcast