我正在编写一个处理PowerPoint演示文稿的应用程序,我正在研究检测PowerPoint演示文稿是否有密码的方法,如果它然后停止处理它。

有帮助吗?

解决方案

在我看来,如果演示文稿受密码保护,则无法检查。您必须先打开文档才能访问属性。打开文档时必须提供密码。

有一个密码属性你可以检查。

我在专家交流中找到了 解决方法

  

问题如下:视觉   Basic是单线程的   申请,这意味着你不能   暂停某项程序   继续另一个(在同一个   应用)。当powerpoint有一个   " on open" -password set,the   你的内部的CreateObject程序   申请被搁置直至   powerpoint发布它,这是什么时候   用户输入密码。有   我不知道这件事,   但你可以解决方法:

     

制作2个应用程序,1个应用程序   你已经拥有的应用程序   第二个是“powerpoint unlocker”。   你刚才运行第二个程序   你打开受保护的powerpoint   应用程序中的演示1.您可以   使用shell命令执行此操作。该   “powerpoint unlocker”可以如此   你想要的就是先进的,你可以   例如提供命令行   参数指定哪个   演示文稿必须解锁   什么密码。然后你用    findwindow api获取窗口   锁定演示文稿的句柄。   一旦你有了,你使用   sendmessage api 输入密码。   在此之后,“电源点解锁器”被称为“电源点解锁器”。   卸载和第一个应用程序可以   恢复执行。

     

我希望这有帮助!

     

Osmodean

其他提示

考虑一下这个 - http ://blogs.msdn.com/b/openspecification/archive/2009/07/17/overview-of-protected-office-open-xml-documents.aspx

对于PPTX文档,您可以检查前8个字节以查看标题(对于加密文件应该是[d0cf 11e0 a1b1 1ae1]),并知道它是否是加密的PPTX。

但是,对于使用Office 2003(默认扩展名.ppt)创建的文件,标头是相同的(MS-CFB标头)。因此,如果有人创建Office 2003文档然后将其重命名为PPTX,则您的代码会将其视为加密文档(而不一定是一个)。

如果您正在处理已在Powerpoint中打开的文档,您可以使用SaveCopyAs函数首先以pptx格式将文档保存到磁盘(使用第二个参数中的默认选项),然后检查标题以检查是否这是一个加密文件。

考虑一下这个 - https://msdn.microsoft.com/ko -kr /库/ dd948895(v = office.12)的.aspx

对于PPT(office 2003)文档,您可以检查无符号整数(0xF3D1C4DF位)以识别文件是否已加密。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top