使用C#检查PPT中的视频

起因

有些PPT文件,视频没有打包在文件中,而是引用了本地的文件。在复制PPT时,有时会遗漏了视频文件。之前我经常给同事处理这个问题,就写了这个代码,用于检查PPT中的视频。代码比较简单 就是就2个遍历。

先循环 slides,foreach (PPT.Slide slide in slides) 

再循环 shapes foreach (PPT.Shape shape in slide.Shapes)

小细节 关闭Microsoft Office 安全选项

有时 会弹出 Microsoft Office 安全选项的窗体,可以用以下代码进行关闭。

                    try
                    {

                        System.Threading.Thread.Sleep(100);
                        IntPtr h = IntPtr.Zero;
                        h = FindWindow(null, "Microsoft Office 安全选项");
                        if (h != IntPtr.Zero)
                        {
                            ForceWindowIntoForeground(h);//置顶   
                            CloseWindow(h);
                        }
                        else
                        {
                        }
                    }
                    catch (Exception)
                    { 
                        
                    }

代码

        private void check_video(string ppt_filepath){if (ObjPression == null)return;string dir = System.IO.Path.GetDirectoryName(ppt_filepath);try{ObjPression.UpdateLinks();}catch  { }try{   PPT.Slides slides = ObjPression.Slides;int c = slides.Count;int i = 0;foreach (PPT.Slide slide in slides){try{ foreach (PPT.Shape shape in slide.Shapes){try{ if (shape.LinkFormat != null){PPT.LinkFormat link = shape.LinkFormat;string filename = link.SourceFullName;string fn = System.IO.Path.Combine(dir, System.IO.Path.GetFileName(filename));if (System.IO.File.Exists(fn)){link.SourceFullName = fn;}else{warning_txt.AppendLine("没有找到"+ filename);}shape.LinkFormat.Update();}}catch (Exception e){// warning_txt.AppendLine(e.Message);}}}catch{}i = i + 1;RunProgress("正在检查视频音频(第"+(i+1).ToString()+"页)", i, c); }}catch (Exception e ){ }if (will_save_checked_file){try{ObjPression.SaveAs(checked_file_name);}catch (Exception){}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java使用poi生成word文档的简单实例

Java使用poi生成word文档的简单实例 生成的效果如下: 用到的poi的简单的知识 新建一个word对象 //新建文件 XWPFDocument document new XWPFDocument();新建段落以及文字样式 //创建段落 XWPFParagraph paragraph document.createParagraph(); paragraph.se…

React学习(三)

React的核心理论主要围绕其构建用户界面的方式,下面将分点详细解释React的核心理论: 组件化: React的核心概念是组件化,即将UI拆分成多个独立、可复用的部分,这些部分就是组件。组件可以是class组件或函数组件&#x…

Idea启动服务报 Command line is too long

一、背景 合不同分支代码后,启动服务报 Error running Application, Command line is too long, Shorten the command line via JAR manifest or via a classpath file and rerun. 没有在意,然后点击了manifest 来进行 二、问题 然后自己在重新启动&…

单线程单元模型简述

单线程单元模型简述 单线程单元(Single-Threaded Apartment, STA)模型是Windows COM(Component Object Model)技术中定义的一种线程同步模型。在STA模型中,每个线程都拥有自己的独立地址空间,并且假设该线…

Linux网络编程:套接字编程

1.Socket套接字编程 1.1.什么是socket套接字编程 Socket套接字编程 是一种基于网络层和传输层网络通信方式,它允许不同主机上的应用程序之间进行双向的数据通信。Socket是网络通信的基本构件,它提供了不同主机间的进程间通信端点的抽象。一个Socket就是…

智能猫砂盆到底是不是智商税?解救上班族双手的测评合集来了

不得不说,像我这样的上班族真的是很需要一个智能猫砂盆了。普通的猫砂盆一天就要打扫3次,遇到很能拉的猫咪的时候,就不止是三次那么简单了。如果有个产品能帮我解决这个问题,让我能放心外出,那又何乐而不为呢&#xff…

马面裙的故事:汉服如何通过直播电商实现产业跃迁

【潮汐商业评论/原创】 波澜壮阔的千里江山在马面裙的百褶上展开,织金花纹在女性的步伐之间若隐若现,从明清到现代,如今马面裙又流行了回来,成为女性的流行单品,2024年春节期间,马面裙更是成为华夏女孩们的…

Halcon 如何根据特征过滤区域和XLD

一 如何跟进特征过滤区域和XLD dev_open_window(0,0,512,512,black,WindowHandle)read_image(Image,fabrik)threshold(Image,Region,128,255)connection(Region,ConnectedRegions)*根据面积范围[8000,9000] dev_display(Image)select_shape(ConnectedRegions,SelectedRegions,…

【Vue】集成富文本编辑器

这文章使用的是wangeditor插件&#xff0c;官网地址&#xff1a;wangEditor&#xff0c;这个比较简单 安装 npm i wangeditor --save 使用 <div id"editor"></div>import E from "wangeditor"const editor new E("#editor") e…

Modbus为何要转成EtherCAT

1. Modbus是什么&#xff1f; Modbus是一种工业通信协议&#xff0c;广泛应用于工业自动化领域。它支持多种通信方式&#xff0c;包括RS-232、RS-485和TCP/IP等。Modbus协议简单易用&#xff0c;能够实现设备之间的数据交换和控制命令的传输。然而&#xff0c;它在数据传输速率…

Tesseract OCR识图工具,通过composer接入hyperf使用

本文主要使用编译安装&#xff0c;yum安装未深入研究为何无法使用 一、下载依赖 sudo yum install -y gcc gcc-c make autoconf automake libtool pkgconfig sudo yum install -y leptonica leptonica-devel这里额外记录一下我踩的坑&#xff0c;第二个依赖安装的时候出现了一…

Mac电脑安装HomeBrew工具(100%成功)

1.Homebrew是什么&#xff1f; homebrew是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等功能。通过简单的指令可以实现包管理&#xff0c;而不用关心各种依赖和文件路径情况。 2.homebrew常用命令 检测是否安装HomeBrew: brew -v卸载Hom…

【杂记-浅谈OSPF协议之Hello、DD、LSR、LSU、LSAck报文】

OSPF中的各种报文 一、Hello报文二、DD报文三、LSR报文四、LSU报文五、LSAck报文 一、Hello报文 Hello报文周期性发送&#xff0c;用来发现和维持OSPF邻居关系&#xff0c;其中&#xff0c;Hello报文包含的字段有&#xff1a; 1、Network Mask&#xff1a;发送Hello报文的接口…

8. Revit API UI: DockablePane(可停靠窗口)

8. Revit API UI: DockablePane&#xff08;可停靠窗口&#xff09; 接着前面的预览控件和外部事件&#xff0c;这一篇&#xff0c;我们来看看可停靠窗口DockablePane的实现。 实现流程 可停靠窗口相关的类与接口主要有DockablePane和IDockablePageProvider&#xff0c;都是…

具备生成自签名文档证书能力的印章管理软件_电子骑缝章软件

最新版的e-章宝具体生成自签名文档证书的能力&#xff0c;这种证书可用内部文档发布的签名&#xff0c;文档一旦用证书签名并发布&#xff0c;具有不可抵赖性&#xff0c;阅读者也能确认所发布的文档是否是发布者发布的&#xff08;即中途有没有被他人恶意修改过&#xff09;&a…

Qt样式表及相关案例

一.Qt样式表介绍 Qt样式表是一个可以自定义部件外观的强大机制&#xff0c;样式表的概念、术语、语法均受到HTML的层叠样式表(Cascading Style Sheets,CSS)的启发。 样式表可通过QApplication::setStyleSheet()函数将其设置到整个应用程序上&#xff0c;也可以使用QWidget::se…

*算法训练(leetcode)第十九天 | 77. 组合、216. 组合总和 III、17. 电话号码的字母组合

刷题记录 *77. 组合216. 组合总和 III*17. 电话号码的字母组合 *77. 组合 leetcode题目地址 回溯法。result记录最终结果&#xff0c;cur_result记录单个组合的结果。 比较难理解的地方在于回溯要撤销对于结点的处理&#xff0c;也就是cur_result.pop_back(); 在for循环中&a…

python Process 多进程处理单个文件

Python 的 multiprocessing 模块可以用来创建多进程以并行处理任务,从而加速对大文件或其他耗时操作的处理。处理单个文件时,可以将文件内容分割成多个部分,每个部分由一个单独的进程处理。以下是一个简单的例子,说明如何使用多进程处理单个文件中的数据行: 基本思路 1. 读…

第9关:索引(2024数据库期末综合)

第9关&#xff1a;索引&#xff08;注意看下面的温馨提示&#xff01;&#xff01;&#xff09; 任务描述 湖南人口hnpeople数据表结构如图所示&#xff0c;各字段含义如下 cs&#xff08;城市)、qx(区县)、rk(人口)、man(男)、woman(女)、child(儿童)、adult(成人)、old(老人)…

揭秘数据合并的秘密:一文掌握一对一、多对一、多对多合并技巧与实战!

使用pd.merge()合并 类似 MySQL 中表和表直接的合并merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并每一列元素的顺序不要求一致1. 一对一合并 df1 = pd.DataFrame({"…