目的:通过代码访问OFFICE,对ppt进行操作;

环境:win7 64位、vs2008、office2013、

步骤:1、首先打开vs2008,创建一个基于对话框的应用程序;

2、右键创建的项目,添加CLASS,选择MFC Class From TypeLib,在接下来的对话框中选择File,然后从office应用程序选择需要的Office类型库,我的路径为:C:\Program Files\Microsoft Office\Office15\MSPPT.OLB;

3、在下面显示出来的接口中,选择需要的,也可以选择全选,我只需要对ppt进行播放、读写访问,所以我选择了_Application、Presentations、_Presentation、Slides、_Slide、SlideShowWindow、SlideShowWindows、SlideShowSettings、SlideShowView、DocumentWindow这十个接口;

4、导入之后将这10个文件中的“#import "C:\\Program Files\\Microsoft Office\\Office15\\MSPPT.OLB" no_namespace”注释掉,然后添加#include <afxdisp.h>,在app的InitInstance函数中添加AfxOleInit()初始化COM;进行编译,通过;

5、开始应用程序的编写,我的主要目的是在程序中控制ppt的播放,所以我在我的程序中会添加打开文件和播放、停止的按钮;窗口如下图:

6、接下来就是代码的实现,下面将主要展示与控制ppt相关的代码;

a、在应用程序初始化中,初始化COM组件:

       if (!AfxOleInit()){AfxMessageBox("Initialize COM context failed!");return FALSE;}

b、头文件中定义相关ppt对象:

 CApplication        m_PPTApp;CPresentations     m_Presentations;CPresentation       m_Presentation;CSlides          m_slides; CSlide            m_slide;CSlideShowWindow    m_oShowWindow;CSlideShowWindows m_oShowWindows;CSlideShowSettings   m_slideshow;CSlideShowView      m_slideShowView;CDocumentWindow     m_documentwindow;

c、打开ppt:

 if(!m_szFileName.IsEmpty()){try{if(!m_PPTApp.CreateDispatch(_T("Powerpoint.Application"),NULL)){MessageBox(_T("创建PowerPoint应用程序失败!"),AfxGetApp()->m_pszAppName,MB_ICONERROR);return;}if(!m_PPTApp.m_lpDispatch){MessageBox(_T("PPT application was not initialized."),AfxGetApp()->m_pszAppName,MB_ICONERROR);return;}m_Presentations.AttachDispatch(m_PPTApp.get_Presentations());m_Presentation.AttachDispatch(m_Presentations.Open(m_szFileName,TRUE,-1,0));m_slides = m_Presentation.get_Slides();m_slide  = m_slides.Item(COleVariant((long)1));m_slideshow = m_Presentation.get_SlideShowSettings();m_slideshow.put_AdvanceMode(2);m_slideshow.put_ShowType(1);m_slideshow.put_LoopUntilStopped(TRUE);              //设置循环放映m_oShowWindow = m_slideshow.Run();                   //运行pptm_slideShowView = m_oShowWindow.get_View();          //得到ppt视图m_oShowWindow.put_Left(10);               //设置ppt播放窗口位置和大小m_oShowWindow.put_Top(10);m_oShowWindow.put_Width(GetSystemMetrics(SM_CXSCREEN)/2);m_oShowWindow.put_Height(GetSystemMetrics(SM_CYSCREEN)/2);}catch (...){m_PPTApp.ReleaseDispatch();}}

d、停止播放

 m_Presentation.Close();m_Presentation.ReleaseDispatch();m_Presentations.ReleaseDispatch();

7、完成。

此示例主要是为了说明如何使用c++通过OLE/COM实现对office的访问,及加载库的方法,以及对ppt的基本操作,如需要对ppt进行读写控制等详细操作可具体查看MSDN中对各个对象的详细说明。

c++操作Office之ppt相关推荐

  1. python ppt_Python3操作Office之PPT

    见惯了Word的严肃,Excel的呆板,你是否更喜欢PPT的美丽冻人呢?-是的,在这个看颜值的时代,越美的东西,大家越喜欢. PPT作为Office的颜值担当,Python咋能不支持呢? 1 支持的, ...

  2. excel小写转大写公式_Word如何一键转PPT/Excel,来看看用对的方式操作office有多方便...

    office有什么难的?从我接触它的那一刻起,我就会了. 那么你真的玩会它了吗?(灵魂拷问脸.jpg)..你也许会说,多用几次就会了呗! NO NO NO 你可能理解错了"用过"与 ...

  3. Java操作office文件的选择

    2019独角兽企业重金招聘Python工程师标准>>> 笔者在这里所述的信息均是从网上搜索聚合而来,有些是亲身做过验证的,有些不符合笔者需求,所以也没有浪费太多时间去做无用功,有需要 ...

  4. python 根据word生成ppt_python操作word、ppt的详解

    python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎封装了所有python下面的win32相关的 ...

  5. C#使用NPOI操作Office

    C#使用NPOI操作Office 什么是NPOI VisualStudio2019引入NPOI NPOI操作word NPOI操作Excel 使用NPOI遇到的坑 什么是NPOI NPOI,顾名思义, ...

  6. WPS Office之PPT基础入门视频课程-陈慧-专题视频课程

    WPS Office之PPT基础入门视频课程-2024人已学习 课程介绍         本课程主要以文字录入为主,辅以简单的美化.动画与播放技巧,可以作为PPT入门的基础课程来学习. 课程收益    ...

  7. python 经典ppt_python操作word、ppt的详解

    python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎封装了所有python下面的win32相关的 ...

  8. WPS Office之PPT动画应用技能-陈慧-专题视频课程

    WPS Office之PPT动画应用技能-247人已学习 课程介绍         1.让初学者了解PPT的强大之处,善于运用PPT来做一些讲义,成为职场高手 2.让PPT使用者能够学习多的PPT设计 ...

  9. Qt操作Office的一个实例--口算题生成器制作。

    文章目录 Qt操作Office的一个实例--口算题生成器制作. 1.关联QAxObject 2.操作Word文档: 3.设计界面 4.关键代码 效果: Qt操作Office的一个实例–口算题生成器制作 ...

最新文章

  1. R语言数据纵向合并rbind函数实战(以及rbind.fill函数合并两个数据列不同的dataframe)
  2. windows下设置进程CPU相关性/亲合度,解决CPU使用率占用100%的问题
  3. 2018-2019-1 20165324_20165302_20165321 实验一 开发环境的熟悉
  4. STM32那点事(2)_时钟树(下)
  5. keras笔记(4)-使用Keras训练大规模数据集
  6. ~~线性筛法求素数(附模板题)
  7. Python---copy()、deepcopy()与赋值的区别
  8. sql2005各种版本
  9. 玩转 Python 3.5 的 await/async
  10. 【SSM -MyBatis篇03】MyBatis Generator(MBG)配置属性详解(基于MyBatis3) - 逆向生成 - 配置MBG模板
  11. Kinect v2 使用ork功能包进行物体识别
  12. c#windfrom打包_WinForm程序打包教程
  13. anaconda下jupyter无法自动打开网页
  14. 讯飞在线语音TTS队列策略
  15. 泛融等多家业界权威通力合作,联合信通院发布《区块链供应链金融白皮书》
  16. 【Cocos Creator 实战教程(4)】——黄金矿工(上)(节点动作、碰撞体相关)
  17. 老子《道德经》第六十五章
  18. 编译kernel外部模块
  19. 2022年计算机软件水平考试多媒体应用设计师(中级)练习题及答案
  20. 大数据基础编程第二版(林子雨)官网,代码与软件资源

热门文章

  1. 如何清空Keil的历史文件记录
  2. Ubuntu 16.04 LTS 64位下安装steam游戏平台
  3. 爬虫如何实现每天爬取,定点爬取[以股票数据为例]
  4. 城固一中2021高考成绩查询,汉中市各高中2020年高考喜报成绩一览
  5. layui 单选框radio 监控事件
  6. 阿里云 OCR 图片文字识别接口使用案例(java)
  7. VirtualBox 安装 Ubuntu虚拟机 显卡驱动
  8. Mysql:Mybatis在xml文件中处理大于号小于号的方法
  9. railgun游戏服务端架构
  10. 【人类高质量层次分析法教程】1分钟实现AHP+矩阵一致性调整