PowerPoint - 如何以编程方式确定演示文稿是否有密码?

时间:2008-10-19 03:15:19

标签: ms-office powerpoint

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

3 个答案:

答案 0 :(得分:3)

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

您可以查看Password Property

我找到了workaround on Expert Exchange

  

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

     

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

     

我希望这有帮助!

     

Osmodean

答案 1 :(得分:1)

考虑一下这个 - 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格式将文档保存到磁盘(使用第二个参数中的默认选项),然后检查标题以检查是否这是一个加密文件。

答案 2 :(得分:0)

考虑一下这个 - enter image description here

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