CSOneNoteRibbonAddIn
Directory actions
More options
Directory actions
More options
CSOneNoteRibbonAddIn
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
=============================================================================
应用程序 : CSOneNoteRibbonAddIn 项目概述
=============================================================================
/////////////////////////////////////////////////////////////////////////////
摘要:
该实例演示了一个实现了IDTExtensibility2 的 OneNote 2010 COM 外接程序.
该外接程序还支持通过实现 IRibbonExtensibility 接口,定制功能区.
CSOneNoteRibbonAddIn: 为 CSOneNoteRibbonAddInSetup 项目生成
CSOneNoteRibbonAddIn.dll 的项目.
CSOneNoteRibbonAddInSetup: 生成用于 OneNote 2010 的 setup.exe 和
CSOneNoteRibbonAddInSetup.msi 的安装项目.
/////////////////////////////////////////////////////////////////////////////
前提条件:
您必须在安装有 Microsoft OneNote 2010 的计算机上运行此代码示例.
/////////////////////////////////////////////////////////////////////////////
演示:
下列步骤将指导通过 CSOneNoteRibbonAddIn 的演示实例.
步骤 1. 以管理员的身份,打开解决方案文件 CSOneNoteRibbonAddIn.sln;
步骤 2. 首先,在 Visual Studio 2010中,生成 CSOneNoteRibbonAddIn,然后生成安装项
目 CSOneNoteRibbonAddInSetup, 那么,你会得到引导程序 setup.exe 和应用程序
CSOneNoteRibbonAddInSetup.msi;
步骤3. 安装 setup.exe;
步骤4. 打开 OneNote 2010, 您将看到三个消息框:
MessageBox.Show("CSOneNoteRibbonAddIn OnConnection"),
MessageBox.Show("CSOneNoteRibbonAddIn OnAddInsUpdate"),
MessageBox.Show("CSOneNoteRibbonAddIn OnStartupComplete");
步骤5. 单击"审阅"选项卡,您将看到"统计组"中,包含有外接程序加到功能区的按钮 ShowForm.
单击 ShowForm 按钮,窗体窗口弹出,您可以单击该窗体上的按钮获取当前页的标题.
步骤6. 当关闭 OneNote 2010 时, 您将看到三个消息框:
MessageBox.Show("CSOneNoteRibbonAddIn OnBeginShutdown"),
MessageBox.Show("CSOneNoteRibbonAddIn OnDisconnection")
/////////////////////////////////////////////////////////////////////////////
创建:
步骤1. 如下所示,创建一个共享外接程序的扩展性,和共享的外接程序向导:
以管理员的身份,打开 Visual Studio 2010;
创建一个共享的外接程序 (Other Project Types->Extensibility)
使用 Visual C# 创建一个外接程序;
选择 Microsoft Access (因为不存在Microsoft OneNote 可供选择,第一,您可以
选择 Microsoft Access 选项,但记得要修改安装项目的的注册表项HKCU为OneNote);
填写外接程序的名称和说明;
在选择外接程序选项中选择两个复选框。
步骤2. 修改 CSOneNoteRibbonAddInSetup 注册表
(右击"项目"->视图->注册表)
[HKEY_CLASSES_ROOT\AppID\{Your GUID}]
"DllSurrogate"=""
[HKEY_CLASSES_ROOT\CLSID\{Your GUID}]
"AppID"="{Your GUID}"
[HKEY_CURRENT_USER\Software\Microsoft\Office\OneNote\AddIns\
CSOneNoteRibbonAddIn.Connect]
"LoadBehavior"=dword:00000003
"FriendlyName"="CSOneNoteRibbionAddIn"
"Description"="OneNote2010 Ribbon AddIn Sample"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{Your GUID}]
"DllSurrogate"=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{Your GUID}]
"AppID"="{Your GUID}"
步骤3. 添加 customUI.xml 和 showform.png 资源文件到项目 CSOneNoteRibbonAddIn 中.
步骤4. 创建继承自 IRibbonExtensibility 的类 Connect,并实现方法 GetCustomUI.
/// <summary>
/// 从自定义功能区用户界面的 XML 自定义文件中,加载的 XML 标记
/// </summary>
/// <param name="RibbonID"> RibbonX 用户界面的 ID </param>
/// <returns>string</returns>
public string GetCustomUI(string RibbonID)
{
return Properties.Resources.customUI;
}
步骤5. 根据 customUI.xml 的内容,实现方法 OnGetImage 和 ShowForm.
/// <summary>
/// 实现 customUI.xml 中的 OnGetImage 方法
/// </summary>
/// <param name="imageName"> customUI.xml 中的图像名 </param>
/// <returns> 装有图像数据的内存流 </returns>
public IStream OnGetImage(string imageName)
{
MemoryStream stream = new MemoryStream();
if (imageName == "showform.png")
{
Resources.ShowForm.Save(stream, ImageFormat.Png);
}
return new ReadOnlyIStreamWrapper(stream);
}
/// <summary>
/// 用于显示窗体的方法
/// </summary>
/// <param name="control"> 表示传递给每个功能区用户界面 (UI) 控件的
/// 回调过程的对象. </param>
public void ShowForm(IRibbonControl control)
{
OneNote.Window context = control.Context as OneNote.Window;
CWin32WindowWrapper owner =
new CWin32WindowWrapper((IntPtr)context.WindowHandle);
TestForm form = new TestForm(applicationObject as OneNote.Application);
form.ShowDialog(owner);
form.Dispose();
form = null;
context = null;
owner = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
步骤6. 添加 ReadOnlyIStreamWrapper 类和 CWin32WindowWrapper 类到项目
CSOneNoteRibbonAddIn 中并添加一个用于测试中打开的窗体.
步骤7. 注册输出程序集为 COM 组件.
若要执行此操作,请单击“项目”->“项目属性...”按钮. 在项目属性页,导航
到"生成"选项卡,并选中复选框"为 COM Interop 注册".
步骤8. 生成您的 CSOneNoteRibbonAddIn 项目,
然后生成 CSOneNoteRibbonAddInSetup 项目以产生 setup.exe 和
CSOneNoteRibbonAddInSetup.msi.
/////////////////////////////////////////////////////////////////////////////
参考:
MSDN: Creating OneNote 2010 Extensions with the OneNote Object Model
http://msdn.microsoft.com/en-us/magazine/ff796230.aspx
Jeff Cardon's Blog
http://blogs.msdn.com/b/onenotetips/
/////////////////////////////////////////////////////////////////////////////