c# Winform 程序嵌入PPT

这篇具有很好参考价值的文章主要介绍了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的播放界面。

c# Winform 程序嵌入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;
                }

                //开始播放ppt
                objSSS = this.objPresSet.SlideShowSettings;
                slideShowWindow = objSSS.Run();

                //没嵌入之前隐藏播放窗口
                ShowWindow(GetParent(GetParent((IntPtr)slideShowWindow.HWND)), SW_HIDE);
 

                //移动ppt程序界面到程序中 slideShowWindow.HWND传入的是ppt播放界面的句柄,如果                
                //想嵌入ppt编辑界面,也可传objApp.HWND
                EmbedProcessEx((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文章来源地址https://www.toymoban.com/news/detail-450743.html

到了这里,关于c# Winform 程序嵌入PPT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于uniapp全局挂载变量/方法的问题,没遇到过点进来吧,记录一下我踩过的坑。

    事情是这样的,我在用uniapp做一个微信小程序,遇到了个问题,是在封装uni.request()到全局方法的时候,其实就很简单的,是关于 this的指向问题 (若想了解此问题的话,点这里去看大佬的文章!!!) ,找几个小时的博客都未能解决。 建uniapp项目时用了vue3,那么就要遵

    2024年02月16日
    浏览(48)
  • C# Winform程序跟随系统启动

       说明:有时候Winform程序,写完了,安装在window服务器上,需要每天重启服务器(担心程序运行旧了就会卡),每次重启后又担心程序没启动,这篇文章可以解决这个问题 Window 10系统测试 设备名称    i7BooK 处理器    Intel(R) Core(TM) i7-6660U CPU @ 2.40GHz   2.40 GHz 机带 RAM    8

    2023年04月09日
    浏览(43)
  • C#桌面程序 winform 集成内置WebApi C# 创建HTTP Web API服务,winform项目创建HTTP WEB服务,不使用IIS业务 C#桌面程序WebApi C#winform集

     在维护旧的项目时,有时需要提供APP连接的需求,就要提供HTTP服务,winform项目就要提供HTTP服务,就不用再去写个c# web的IIS相关的业务了,简化项目的复杂度。只需要简单化实例就可以实现提供HTTP服务

    2024年02月08日
    浏览(52)
  • C# WinForm程序安全彻底退出方法

    本文讲解在C#退出WinForm程序的方法, 目录 4种常用方法 退出实例 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(

    2024年02月16日
    浏览(38)
  • C#中简单Winform程序编译(待验证)

    1、文件架构 2、MainWindow.xaml 3、MainWindow.xaml.cs 4、测试程序

    2024年02月16日
    浏览(39)
  • C#:WinForm应用程序中用鼠标移动控件位置

    有时候在WinForm程序中,我们需要用鼠标移动程序窗口中的对象(例如图片对象等)的位置,可以通过定义控件的鼠标事件来实现。以命名为pictureBox1的PictureBox控件为例,分别定义它的MouseDown(按下鼠标按钮)、MouseMove(移动鼠标)、MouseUp(释放鼠标按钮)三个事件,代码如

    2024年02月16日
    浏览(43)
  • 浅聊一下 C#程序的 内存映射文件 玩法

    前段时间训练营里有朋友问 内存映射文件 是怎么玩的?说实话这东西理论我相信很多朋友都知道,就是将文件映射到进程的虚拟地址,说起来很容易,那如何让大家眼见为实呢?可能会难倒很多人,所以这篇我以自己的认知尝试让大家眼见为实。 在任何讨论之前,内存文件

    2024年02月08日
    浏览(36)
  • 记录一下,C#运行nodejs调用js文件提示报错:Error: node:internal/modules/cjs/loader:1080

    个人记录一下,C#运行nodejs调用js文件提示报错: 报错提示信息: Error: node:internal/modules/cjs/loader:1080 throw err;   ^  Error: Cannot find module \\\'F:鎴戠殑....................” .....................下面还有很多报错内容 还有英文提示模块未找到的提示。 我另一个文件运行没报错,运行正常有

    2024年02月11日
    浏览(156)
  • C#实例:多功能Windows窗体应用程序Helloworld_WinForm

    有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm 使用常用C#Windows窗体控件 实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 1、创建窗体Form 项目创建时会默

    2024年02月04日
    浏览(58)
  • C# 关于使用newlife包将webapi接口寄宿于一个控制台程序、winform程序、wpf程序运行

    C# 关于使用newlife包将webapi接口寄宿于一个控制台程序、winform程序、wpf程序运行 安装newlife包 Program的Main()函数源码 MyController 源码 MyHttpHandler 源码 源代码百度链接 链接:https://pan.baidu.com/s/15OxTDOBO_y5bFyrzPW3XPw?pwd=sr3c 提取码:sr3c

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包