使用 .NET 构建您自己的 Microsoft Office 加载项






3.68/5 (12投票s)
2005年12月10日
2分钟阅读

121777

2672
如何使用 C# 为支持加载项的 Microsoft 应用程序构建加载项。
引言
在本文中,我们将学习如何为支持加载项的 Microsoft 应用程序创建一个简单的 Hello World 浏览器加载项。 以下是此类应用程序的列表:
- Microsoft Word
- Microsoft VSMacros IDE
- Microsoft Visual Studio .NET
- Microsoft Visio
- Microsoft Publisher
- Microsoft Project
- Microsoft PowerPoint
- Microsoft Outlook
- Microsoft FrontPage
- Microsoft Excel
- Microsoft Access
在本文中,我们将以 Microsoft Outlook 为例。
必备组件
您必须具备以下条件…
- Microsoft Development Environment 2003 或更高版本
- Microsoft .NET Framework 2.0
- Office Primary Interop Assemblies (PIAs)。 对于 Office XP,单击此处下载。
创建加载项
- 运行 Microsoft Development Environment。
- 转到文件> 新建项目>,将出现一个对话框。
- 转到其他项目> Extensibility Project,选择共享加载项类型项目模板。
加载项向导
加载项向导启动后,按下一步...
选择编程语言(例如 C#),按下一步。
选择要在其中托管加载项的应用程序,按下一步。
提供加载项名称和描述,按下一步。
选择加载项选项,按下一步。
按完成。
设置项目
将自动添加两个项目。
- 加载项项目。
- 设置项目。
创建浏览器窗体
- 为加载项项目添加一个名为frmHelloWorld.cs的窗体。
- 添加一个
Label
、TextBox
和一个PictureBox
。 - 向窗体添加一个 Microsoft Web 浏览器控件(您可以通过右键单击工具箱,选择“添加/删除项”,然后单击“COM 组件”来获取它:将列出许多控件,选择 Microsoft Web 浏览器控件,然后按确定)。
- 使用以下代码,创建一个函数
go()
void go()
{
try
{
stbPanel1.Text="Trying to open "+tbURL+"..." ;
object obj=new object ();
browser.Navigate(tbURL.Text,ref obj,ref obj,ref obj,ref obj);
}
catch(Exception ex)
{
//error hanlder here......
}
}
在PictureBox
的Click
事件中调用此函数。
加载项连接编程
安装 PIAs 并添加对以下 DLL 的引用:Microsoft.Office.Interop.Outlook.DLL。
加载项项目中会有一个文件connect.cs,打开它。 全局声明以下项目
//for Outlook Express you can mention here word, power point.
private Microsoft.Office.Interop.Outlook.Application applicationObject;
private object addInInstance;
private CommandBarButton btnLaunch;
在函数OnStartupComplete
中,编写以下代码
public void OnStartupComplete(ref System.Array custom)
{
CommandBars commandBars =
applicationObject.ActiveExplorer().CommandBars;
try
{
//if will be good if button exist use it
btnLaunch= (CommandBarButton)
commandBars["Standard"].Controls["HelloWorld"];
}
catch
{
//if error occur
btnLaunch = (CommandBarButton)
commandBars["Standard"].Controls.Add(1,
System.Reflection.Missing.Value,
System.Reflection.Missing.Value,
System.Reflection.Missing.Value,
System.Reflection.Missing.Value);
btnLaunch.Caption = "Hello World Browser!";
btnLaunch.Style = MsoButtonStyle.msoButtonCaption;
}
//use tag for quick access of button.
btnLaunch.Tag = "This is Hello World Browser!";
btnLaunch.OnAction = "!<EMAILSTATSADDIN.CONNECT>";
btnLaunch.Visible = true;
btnLaunch.Click += new
_CommandBarButtonEvents_ClickEventHandler(
btnLaunch_Click);
}
在函数OnBeginShutdown
中,编写以下代码
public void OnBeginShutdown(ref System.Array custom)
{
//delete our button...
CommandBars commandBars = applicationObject.ActiveExplorer().CommandBars;
try
{
//remove on unload...
commandBars["Standard"].Controls["HelloWorld"].Delete(
System.Reflection.Missing.Value);
}
catch(System.Exception ex)
{
//code to show/log error...
}
}
在btnLanuch
事件处理程序中编写以下代码
private void btnLaunch_Click(CommandBarButton Ctrl,
ref bool CancelDefault)
{
try
{
frmHelloWorld objfrmHelloWorld=new frmHelloWorld ();
objfrmHelloWorld.Show();
}
catch(Exception ex)
{
//code to show or log error...
}
}
重新生成和安装
右键单击设置项目,单击重新生成,它将自动重新生成加载项和设置项目。 然后,右键单击设置项目,然后单击安装。
运行
运行 Microsoft Outlook,您将在工具栏上看到“Hello World Browser!”。 单击它,您的加载项将启动。 正如您在此处看到的...
已知问题
卸载后,“Hello World Browser!”按钮未从 Outlook 工具栏中删除。