`

谈如何捕获OFFICE软件的事件

阅读更多

  今天很高兴,终于学会捕获Microsoft Office PowerPoint的事件。写出来给大家分享。我发现网上原创的文章少,转载的文章多,我来为原创做点贡献。
  本文以PPT为例,其原理应该适用于WORD及EXCEL,假定读者有些使用ATL开发OFFICE插件(或COM)的基础。所谓事件,在PPT中是指SlideShowBegin(播放开始)、SlideShowEnd(播放结束)等,所有事件的名字和含义可以PPT的VBA帮助章节找到。
  作者的测试环境为VC6.0,使用ATL框架。测试的基础软件框架使用的是徐景周(很感谢这位高人,代码及文章给了我很大的帮助)的《PowerPoint2K/XP插件开发》中的源码,相关源码及文章可以到www.vckbase.com 上找到。插件开发的相关细节这里就略过了。
  其实技术就是一层纸,非常的简单,在此我也不打算详细的说,把几个要点说一下。其实是仔细分析了自定义按钮单击事件的代码后,经过一上午的测试实现了PPT播放事件的捕获。主要就是在几个地方加入些代码。
1.使插件类继承public IDispEventSimpleImpl<11/*自定的不重复正数*/, CPowerPoint2000Addin, &__uuidof(MSPPT::EApplication)>
 定义一个转义:typedef IDispEventSimpleImpl</*nID =*/ 11,CPowerPoint2000Addin, &__uuidof(MSPPT::EApplication)> PPTEvents;
2.声明一个结构,标识响应函数信息(第一个必须为CC_STDCALL,后面是返回值,参数个数及类型)
_ATL_FUNC_INFO OnPPTEventInfo = {CC_STDCALL,VT_EMPTY,1,{VT_DISPATCH}};
3.增加事件映射
 BEGIN_SINK_MAP(CPowerPoint2000Addin)
  //SINK_ENTRY_INFO(1,__uuidof(Office::_CommandBarButtonEvents),/*dispid*/ 0x01,OnClickButton1, &OnClickButtonInfo)
  SINK_ENTRY_INFO(11,__uuidof(MSPPT::EApplication),/*dispid*/ 2011,SlideShowBegin, &OnPPTEventInfo)//2011,DISPID,可以在MSDN上查到
 END_SINK_MAP()
其它DISPID
2001 WindowSelectionChange  
2002 WindowBeforeRightClick  
2003 WindowBeforeDoubleClick  
2004 PresentationClose  
2005 PresentationSave  
2006 PresentationOpen  
2007 NewPresentation  
2008 PresentationNewSlide  
2009 WindowActivate  
2010 WindowDeactivate  
2011 SlideShowBegin  
2012 SlideShowNextBuild  
2013 SlideShowNextSlide  
2014 SlideShowEnd  
2015 PresentationPrint  
2016 SlideSelectionChanged x
2017 ColorSchemeChanged x
2018 PresentationBeforeSave x
2019 SlideShowNextClick x

4.声明事件
    void __stdcall SlideShowBegin (IDispatch * /*struct SlideShowWindow * */ Wn );
  实现事件
  void __stdcall CPowerPoint2000Addin::SlideShowBegin (IDispatch * /*struct SlideShowWindow * */ Wn )
{
 MessageBox(NULL, "SlideShowBegin", "SlideShowBegin" , MB_OK);
// return S_OK;
}
5.激活新增的事件连接点
  hr = PPTEvents::DispEventAdvise((IDispatch*)m_spApp);
  if(FAILED(hr)){
   //MessageBox(NULL, "FAILED", "FIELED", MB_OK);
  }

这样就可以了,可以点击PPT播放按钮看一下效果,是不是弹出了自己的对话框。提示,不要忘了在插件卸载的时候断开新增的连接点事件。调试的时候不要忘记把OFFICE库改成自已机器上库的相应路径及版本。
所有源码请到我的网络硬盘(http://wallimn.ys168.com )下载,更多信息请访问我的博客(http://blog.csdn.net/wallimn)


/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2006-11-16
博客:http://blog.csdn.net/wallimn http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/

分享到:
评论

相关推荐

    vc 捕获ppt事件

    在IT领域,尤其是在软件开发中,有时我们需要对应用程序进行深入的控制,比如捕获和响应特定的事件。在这个场景中,"vc 捕获ppt事件"是指使用Visual C++(VC++)来编程,以便在Microsoft PowerPoint运行时能够监听和...

    office办公软件上机操作试题.doc

    office办公软件上机操作试题 本资源为office办公软件上机操作试题,主要内容为中国成语故事——卧薪尝胆的编辑和Excel成绩表的制作。该资源涵盖了office办公软件的多种功能,如文字编辑、格式设置、图片插入、表格...

    office软件

    Office软件是日常工作中不可或缺的工具,它包含了诸如Word、Excel、PowerPoint等一系列应用程序,用于文本处理、数据分析和演示文稿制作。Office软件以其强大的功能和易用性深受全球用户的喜爱。 首先,我们来关注...

    3种常用国产办公软件与微软Office软件的测试对比

    永中Office作为另一款国产办公软件,其集成办公软件系统将文字处理、表格、演示等模块集成在一个软件中,用户无需安装多个软件即可完成日常办公任务。永中Office特别强调的是其集成性和创新性,例如提供了强大的宏和...

    office办公软件考试题库应用下载,office办公软件基础知识题库,一级计算机基础ms office题库软件

    Office办公软件是日常工作中不可或缺的工具,主要用于文档处理、数据计算和演示文稿制作。Microsoft Office(简称MS Office)是一套由微软公司开发的办公软件套件,它包含了多个应用程序,如Word、Excel和PowerPoint...

    office版本强力清除软件

    在IT领域,微软Office是一款广泛使用的办公软件套件,包括Word文档处理、Excel电子表格、PowerPoint演示文稿以及Outlook邮件管理等多个组件。本文将深入探讨如何针对Office 2013、2016、2019以及Office 365进行彻底...

    office办公软件有哪些:试试OnlyOffice(Office办公软件)官网中文版吧

    ONLYOFFICE中文版是一款在国外比较流行的优秀的Office办公软件,据说市场占有率仅次于微软的Microsoft Office,可以帮助大家创建复杂的文档、专业的电子表格、令人赞叹的演示文稿以及可填写的表单,通过基于选项卡的...

    office软件使用详解

    所有office软件的详细使用方法,不必再为怎么使用一项功能到处询问,做自己的老师!!!

    Office软件学习

    标题“Office软件学习”指的是对Microsoft Office套件的掌握与应用。这是一组广泛使用的办公自动化工具,包括Word、Excel、PowerPoint、Outlook等多个组件,适用于文档处理、数据分析、演示制作、邮件管理等多种工作...

    去除office2003密码的软件 去除office密码的软件去除office密码的软件

    去除of去除office密码的软件fice密码的软件去除office密码的软件

    Office办公软件案例教程

    【内容提要】 本书以Microsoft Office 2003为蓝本,通过案例的形式,对Office 2003中的Word、Excel、PowerPoint和Outlook等软件的使用进行了详细的讲解。全书以培养能力为目标,本着“实践性与应用性相结合”、...

    office软件比较好实用

    office软件,比较好实用比较好实用比较好实用

    AVAYA IP Office Manager软件中文手册.pdf

    1. AVAYA IP Office Manager软件是一款专为管理AVAYA IP Office系统而设计的软件工具。IP Office Manager允许用户配置和维护IP电话系统,它提供了一个图形化的用户界面来实现系统设置,包括呼叫控制、用户管理、系统...

    Office uninstall(专业office卸载工具)单文件版V1.8.3 | 如何全面清除office卸载残留

    Office uninstall是一款专门为微软Office办公软件量身定做的office卸载工具,可以帮助大家彻底卸载已经安装到电脑上的Office软件,彻底解决office卸载不干净,无法重新安装的问题,全面兼容office2003、office2007、...

    MyOffice办公软件

    《MyOffice办公软件详解》 MyOffice是一款专为日常办公设计的强大软件,它以其便捷、高效的特点深受广大用户的喜爱。这款软件集成了多种办公必备工具,包括文字处理、电子表格、演示文稿制作以及日程管理等,为用户...

    Office软件比赛宣传片

    【Office软件比赛宣传片】是一个以展示Office软件应用技巧和竞赛为主题的宣传材料,通常用于吸引参与者或观众关注即将举行的Office技能比赛。在这个PPT文件【MOS大赛宣传片.pptx】中,我们可以期待看到一系列关于...

    office软件卸载清理工具

    在IT领域,Office软件是日常工作中必不可少的工具,包括Word、Excel、PowerPoint等组件。然而,当用户尝试卸载Office软件时,可能会遇到一些问题,导致卸载不彻底,留下残留文件。这些残留文件可能占用硬盘空间,...

Global site tag (gtag.js) - Google Analytics