记录一下,嵌入ppt程序遇到的问题。。。。。。。。。。。。。。。。。。。。。。。。。。。

在网上找了很多资料,关于嵌入ppt浏览ppt的例子和方法,使用下来都是一大推问题。。

最后选择了打开ppt程序,把ppt程序嵌入页面UI中这个方法,但同样问题都一抹多,庆幸问题最后都有惊无险解决掉了

1、office asstant 没有安装

在程序中第一次写下代码,直接打开ppt程序,当时就抛异常:office asstant not install.

using POWERPOINT = Microsoft.Office.Interop.PowerPoint;
using OFFICECORE = Microsoft.Office.Core;objApp = new POWERPOINT.Application();objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoFalse);

搞人心态,网上也查不到什么原因,难道大家都没有遇到过吗。。

其实我估计也是office环境问题,同事运行我这段代码是没问题的,最后把同事的office环境给搞过来了。

原来我用的office是2013版本的,最后换成了2016,然后安装了三个插件,不知道是版本还是插件问题,没下去深究。

2、第一次打开ppt并浏览了后,关闭界面,然后第二次浏览ppt,究抛异常了,原因是第一次打开的ppt程序并没有关闭。。。怪自己太辣鸡了,技术差,哈哈哈

下面是ppt嵌入的效果,没有直接嵌入ppt编辑界面,直接嵌入的是ppt的播放界面。

最后贴一段代码,打开ppt嵌入界面的。


using POWERPOINT = Microsoft.Office.Interop.PowerPoint;
using OFFICECORE = Microsoft.Office.Core;POWERPOINT.Application objApp = null;
POWERPOINT.Presentation objPresSet = null;
POWERPOINT.SlideShowWindows objSSWs;[DllImport("user32.dll")]
public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
public static extern int MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool BRePaint);
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int fLag);public void PPTOpen(string filePath){try{//打开一个ppt程序objApp = new POWERPOINT.Application();ShowWindow((IntPtr)objApp.HWND, SW_HIDE);//打开一个ppt,隐藏编辑窗口.//Open的三个参数:ppt路径,是否只读,是否显示标题,是否显示ppt编辑界面objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoFalse);//objPresSet.SlideShowSettings.ShowType这个属性值建议自己去尝试,每个对应的    值会有不同的惊喜哦,就不贴每个属性对应值得效果图了objPresSet.SlideShowSettings.ShowType = PpSlideShowType.ppShowTypeWindow;//设置该属性是为了防止ppt播放完毕后弹出是否保存界面objPresSet.Saved = OFFICECORE.MsoTriState.msoTrue;objSlides = objPresSet.Slides;if (objSlides.Count == 0){MessageBox.Show("空白幻灯片,不能播放");return;}//开始播放pptobjSSS = this.objPresSet.SlideShowSettings;slideShowWindow = objSSS.Run();//没嵌入之前隐藏播放窗口ShowWindow(GetParent(GetParent((IntPtr)slideShowWindow.HWND)), SW_HIDE);//移动ppt程序界面到程序中 slideShowWindow.HWND传入的是ppt播放界面的句柄,如果                //想嵌入ppt编辑界面,也可传objApp.HWNDEmbedProcessEx((IntPtr)slideShowWindow.HWND, panelTeachContent);}catch (Exception ex){}}private bool EmbedProcessEx(IntPtr nHwnd, Control control){IntPtr hwnd = (IntPtr)nHwnd;if (control == null || hwnd == IntPtr.Zero) return false;try{SetParent(hwnd, control.Handle);MoveWindow(hwnd, 0, 0, control.Width, control.Height, true);}catch (Exception ex){return false;}return true;}

最后,就酱紫吧。。。。

同理,其他语言也类似,用了w32API的SetParent和MoveWindow

c# Winform 程序嵌入PPT相关推荐

  1. 把控制台程序嵌入到 WinForm 中执行

    我们经常有一些用控制台实现的简单应用,这种应用一般都是一步一步"向导"式执行,在每一步上收集用户的输入,最后得到程序执行的结果.但有些用户可能不喜欢用键盘操作的命令行界面,还是愿意 ...

  2. 在WinForm程序中嵌入ASP.NET

    现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分不清什么时候是在本地什么时候是在网络.而这 ...

  3. 在WinForm程序中嵌入ASP.NET[转]

    在WinForm程序中嵌入ASP.NET 现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分 ...

  4. exe程序嵌入Winform窗体

    1.新建winform程序,添加一个Panel控件和一个button控件,winform窗体命名为:Mainform: 2.新建一个类文件,方便引用,命名为:exetowinform: 3.Mainf ...

  5. exe程序嵌入Winform窗体(转载)

    1.新建winform程序,添加一个Panel控件和一个button控件,winform窗体命名为:Mainform: 2.新建一个类文件,方便引用,命名为:exetowinform: 3.Mainf ...

  6. .Net winform中嵌入Flash

    要在c# winform程序里嵌入FLASH,其实就是直接引用Flash的ocx控件. 那你就需要使用"COM 组件" Shockwave Flash Object.不过这个&qu ...

  7. 转:WinForm程序中两份mdf文件问题的解决方法

    在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给 ...

  8. 运用Edraw为WPF应用程序嵌入Office文档的方法总结

    2019独角兽企业重金招聘Python工程师标准>>> 具体描述了运用Edraw Office Viewer Component为WPF应用长须嵌入MS Word,Excel以及Po ...

  9. 如何将html格式动态图表网页嵌入ppt中

    看了之前推送的REmap相关内容,结果导出的图表是html格式的动态图,不知道如何将此种格式的图表放在ppt中使用. 这确实很尴尬他呀,你不能直接拿着Rstudio跟客户演示呀(而且还不保证每一台PC ...

最新文章

  1. 在windows10上搭建caffe
  2. debug —— set args调试命令(作为程序运行时的参数)
  3. ioremap 与 mmap【转】
  4. mysql 上级组织参数值_MySQL参数group_replication_consistency说明
  5. 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
  6. CentOS重新加载网卡报错 Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/23
  7. ADO.NET Entity Framework 深入分析, Part 5
  8. 基于VMWare配置VxWorks开发环境
  9. 同学们对《现代软件工程》课程的意见
  10. python做图像识别该学什么_Python实现图片识别加翻译【高薪必学】
  11. python-内置函数-数学函数
  12. 疫情蔓延让这项CV技术突然火了,盘点开源代码
  13. 一个分页的java工具类,可以参考
  14. 两张表合并加标识根据ID
  15. s7edge 无法连接计算机,s7-200,CPU224CN无法连接到电脑-工业支持中心-西门子中国...
  16. 两个指定顶点之间最短路问题Lingo解法
  17. 如何给公司节约成本,搭建免费开源监控系统uptime-kuma
  18. 怎么使用7zip进行分批压缩_7z解压软件(7-zip)分卷压缩怎么做?
  19. 无涯教程: Laravel 8 - 队列介绍
  20. 【java后端】容器集合

热门文章

  1. 硬盘无法格式化怎么解决?数据丢失怎么恢复?
  2. 计算机辅助设计高级绘图员技能鉴定试题(电路类),计算机辅助设计高级绘图员技能鉴定试题(电路类)1...
  3. 苹果手机用哪款耳机音质最好?平价好用的蓝牙耳机
  4. March 27th Tuesday (三月  二十七日 火曜日)
  5. Google Maps API licensing
  6. VM下虚拟机连接usb相机后电脑蓝屏重启问题
  7. 使用Javascript(js)技术实现动态时钟效果—北大青鸟
  8. 小凯的疑惑 NOIP2017
  9. idea中的power save mode使用
  10. 概率,概率分布,高斯分布,高维高斯分布