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