c# Winform 程序嵌入PPT
记录一下,嵌入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相关推荐
- 把控制台程序嵌入到 WinForm 中执行
我们经常有一些用控制台实现的简单应用,这种应用一般都是一步一步"向导"式执行,在每一步上收集用户的输入,最后得到程序执行的结果.但有些用户可能不喜欢用键盘操作的命令行界面,还是愿意 ...
- 在WinForm程序中嵌入ASP.NET
现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分不清什么时候是在本地什么时候是在网络.而这 ...
- 在WinForm程序中嵌入ASP.NET[转]
在WinForm程序中嵌入ASP.NET 现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分 ...
- exe程序嵌入Winform窗体
1.新建winform程序,添加一个Panel控件和一个button控件,winform窗体命名为:Mainform: 2.新建一个类文件,方便引用,命名为:exetowinform: 3.Mainf ...
- exe程序嵌入Winform窗体(转载)
1.新建winform程序,添加一个Panel控件和一个button控件,winform窗体命名为:Mainform: 2.新建一个类文件,方便引用,命名为:exetowinform: 3.Mainf ...
- .Net winform中嵌入Flash
要在c# winform程序里嵌入FLASH,其实就是直接引用Flash的ocx控件. 那你就需要使用"COM 组件" Shockwave Flash Object.不过这个&qu ...
- 转:WinForm程序中两份mdf文件问题的解决方法
在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给 ...
- 运用Edraw为WPF应用程序嵌入Office文档的方法总结
2019独角兽企业重金招聘Python工程师标准>>> 具体描述了运用Edraw Office Viewer Component为WPF应用长须嵌入MS Word,Excel以及Po ...
- 如何将html格式动态图表网页嵌入ppt中
看了之前推送的REmap相关内容,结果导出的图表是html格式的动态图,不知道如何将此种格式的图表放在ppt中使用. 这确实很尴尬他呀,你不能直接拿着Rstudio跟客户演示呀(而且还不保证每一台PC ...
最新文章
- 在windows10上搭建caffe
- debug —— set args调试命令(作为程序运行时的参数)
- ioremap 与 mmap【转】
- mysql 上级组织参数值_MySQL参数group_replication_consistency说明
- 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
- CentOS重新加载网卡报错 Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/23
- ADO.NET Entity Framework 深入分析, Part 5
- 基于VMWare配置VxWorks开发环境
- 同学们对《现代软件工程》课程的意见
- python做图像识别该学什么_Python实现图片识别加翻译【高薪必学】
- python-内置函数-数学函数
- 疫情蔓延让这项CV技术突然火了,盘点开源代码
- 一个分页的java工具类,可以参考
- 两张表合并加标识根据ID
- s7edge 无法连接计算机,s7-200,CPU224CN无法连接到电脑-工业支持中心-西门子中国...
- 两个指定顶点之间最短路问题Lingo解法
- 如何给公司节约成本,搭建免费开源监控系统uptime-kuma
- 怎么使用7zip进行分批压缩_7z解压软件(7-zip)分卷压缩怎么做?
- 无涯教程: Laravel 8 - 队列介绍
- 【java后端】容器集合
热门文章
- 硬盘无法格式化怎么解决?数据丢失怎么恢复?
- 计算机辅助设计高级绘图员技能鉴定试题(电路类),计算机辅助设计高级绘图员技能鉴定试题(电路类)1...
- 苹果手机用哪款耳机音质最好?平价好用的蓝牙耳机
- March 27th Tuesday (三月 二十七日 火曜日)
- Google Maps API licensing
- VM下虚拟机连接usb相机后电脑蓝屏重启问题
- 使用Javascript(js)技术实现动态时钟效果—北大青鸟
- 小凯的疑惑 NOIP2017
- idea中的power save mode使用
- 概率,概率分布,高斯分布,高维高斯分布