使用VC++ ATL开发Office COM插件(一)
2007-08-31 12:40
363 查看
说到Office相关的编程,大家首先想到的可能是VBA(Visual Basic for Application),事实上, ATL也是一种很好的工具。这里介绍的就是一种基于ATL的Office编程方法,实现的功能很简单,仅仅是一个示例,步骤如下:
1、在visual C++编程环境下,利用向导生成一个名为WordAddin的ATL COM Appwizard工程:
在向导的第一个对话框中server type单选框选择默认的服务器类型Dynamic Link Library(DLL),下面的三个复选框中选择Allow merging of proxy-stub code选项。然后单击Finish,这样一个空的ATL project就产生了(如图 一)。
图文
图一
2、插入我们的ATL object:
选择菜单Insert—>Insert new ATL object,出现new ATL object向导对话框,左边的category列表中选择object,右边相应的选择simple object,单击下一步(Next)(如图 二):
图二
在第二个对话框names属性页的“Short Name:”中填入Addin(如图三):
图三
在Attribute属性页中,选中Support IsupportErrorInfo复选框,单击OK(如图四):
图四
这样就产生了一个类名为WordAddin的ATL COM object,编译(build)该工程看是否一切正常。
2、用IDTExtensibility2实现CAddin类:
IDTExtensibility2是定义在MSADDin Designer typelibrary(MSADDNDR.dll/MSADDNDR.tlb)中的库文件,该文件一般在C:/Program Files/Common Files/Designer目录下。IDTExtensibility2 库提供了 5 个可用来操纵插件以及宿主应用程序的事件: OnConnection、OnDisconnection、OnAddInsUpdate、OnStartupComplete 和 OnBeginShutdown。这些事件的具体功能和用法可查阅MSDN。用向导来实现IDTExtensibility2接口:切换到 classview页,右键点击Caddin类,在弹出的菜单中选择Implement Interface,出现Implement Interface对话框,选择Add Tylpelib按钮(如图 五):
图五
(单击OK,)在出现的Browse Typelibraries对话框中选择Microsoft Add-in Designer(1.0) (如图六):
图六
单击OK,在AddinDesignerObjects属性页中选择IDTExtensibility2(如图七):
图七
再单击OK。这样向导就在ATL COM object中添加了IDTExtensibility2的5个具体事件,并对他们进行了一些默认的初始设置,同时还更新了COM_INTERFACE_MAP()。
4、注册插件到它的宿主程序:
打开文件视图FileView—>Resource File中的Addin.rgs文件,加入以下代码:
HKCU
{
Software
{
Microsoft
{
Office
{
Word
{
Addins
{
''WordAddin.Addin''
{
val FriendlyName = s ''WORD Custom Addin''
val Description = s ''Word Custom Addin''
val LoadBehavior = d ''00000003''
val CommandLineSafe = d ''00000001''
}
}
}
}
}
}
}
5、重新编译(build)该工程注册我们的插件。
6、运行,选择Executable File为word 2000,注意要选择正确的路径,如果运行成功,则插件已经加入到word中。
1、在visual C++编程环境下,利用向导生成一个名为WordAddin的ATL COM Appwizard工程:
在向导的第一个对话框中server type单选框选择默认的服务器类型Dynamic Link Library(DLL),下面的三个复选框中选择Allow merging of proxy-stub code选项。然后单击Finish,这样一个空的ATL project就产生了(如图 一)。
图文
图一
2、插入我们的ATL object:
选择菜单Insert—>Insert new ATL object,出现new ATL object向导对话框,左边的category列表中选择object,右边相应的选择simple object,单击下一步(Next)(如图 二):
图二
在第二个对话框names属性页的“Short Name:”中填入Addin(如图三):
图三
在Attribute属性页中,选中Support IsupportErrorInfo复选框,单击OK(如图四):
图四
这样就产生了一个类名为WordAddin的ATL COM object,编译(build)该工程看是否一切正常。
2、用IDTExtensibility2实现CAddin类:
IDTExtensibility2是定义在MSADDin Designer typelibrary(MSADDNDR.dll/MSADDNDR.tlb)中的库文件,该文件一般在C:/Program Files/Common Files/Designer目录下。IDTExtensibility2 库提供了 5 个可用来操纵插件以及宿主应用程序的事件: OnConnection、OnDisconnection、OnAddInsUpdate、OnStartupComplete 和 OnBeginShutdown。这些事件的具体功能和用法可查阅MSDN。用向导来实现IDTExtensibility2接口:切换到 classview页,右键点击Caddin类,在弹出的菜单中选择Implement Interface,出现Implement Interface对话框,选择Add Tylpelib按钮(如图 五):
图五
(单击OK,)在出现的Browse Typelibraries对话框中选择Microsoft Add-in Designer(1.0) (如图六):
图六
单击OK,在AddinDesignerObjects属性页中选择IDTExtensibility2(如图七):
图七
再单击OK。这样向导就在ATL COM object中添加了IDTExtensibility2的5个具体事件,并对他们进行了一些默认的初始设置,同时还更新了COM_INTERFACE_MAP()。
4、注册插件到它的宿主程序:
打开文件视图FileView—>Resource File中的Addin.rgs文件,加入以下代码:
HKCU
{
Software
{
Microsoft
{
Office
{
Word
{
Addins
{
''WordAddin.Addin''
{
val FriendlyName = s ''WORD Custom Addin''
val Description = s ''Word Custom Addin''
val LoadBehavior = d ''00000003''
val CommandLineSafe = d ''00000001''
}
}
}
}
}
}
}
5、重新编译(build)该工程注册我们的插件。
6、运行,选择Executable File为word 2000,注意要选择正确的路径,如果运行成功,则插件已经加入到word中。
相关文章推荐
- 使用VC++ ATL开发Office COM插件(二)
- 使用VC++ ATL开发Office COM插件(三)
- 【outlook plugin】利用VC++/ATL开发Office 2003 COM插件
- VC6.0 使用小结--让开发更加快捷的vc插件
- 使用VC++ ATL实现Office的COM插件
- 使用VC++ ATL实现iStylePDF的COM插件
- MS IDE RAD技术入门----VC6插件开发入门(1)----使用VC来可行性
- 使用VC++ ATL实现iStylePDF的COM插件
- VC 用微软插件或CHtmlView 开发浏览器时如何指定使用的IE内核版本
- 使用VC++ ATL实现iStylePDF的COM插件
- 一个spring+hibernate开发的小程序的修改(其中配置文件使用的是HibernateSynchronizer插件生成)
- 使用jQuery图表插件Sparklines来开发一个实用的网站PV(page view)实时监控应用
- 使用pathogen管理Vim插件并托管到Github 参照文章【1】【2】的办法,将vim打造成一个Python开发环境。文章中使用的是 pathogen + git 来管理 Vim 插件的。对这种
- (转)基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用
- 使用VC++/ATL创建一个Office2K AddIn Com 组件
- 使用EPInfo帮助开发Eclipse插件
- 在eclipse中使用jetty插件替代m2e开发调试maven web项目
- 微信小程序 - 开发插件与使用插件
- jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明
- 使用Dependency Walker查看可执行程序的引用关系(Windows+VC开发)