我正在编写一个处理PowerPoint演示文稿的应用程序,我正在研究检测PowerPoint演示文稿是否有密码的方法,如果它然后停止处理它。
答案 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)
对于PPTX文档,您可以检查前8个字节以查看标题(对于加密文件应该是[d0cf 11e0 a1b1 1ae1]),并知道它是否是加密的PPTX。
但是,对于使用Office 2003(默认扩展名.ppt)创建的文件,标头是相同的(MS-CFB标头)。因此,如果有人创建Office 2003文档然后将其重命名为PPTX,则您的代码会将其视为加密文档(而不一定是一个)。
如果您正在处理已在Powerpoint中打开的文档,您可以使用SaveCopyAs函数首先以pptx格式将文档保存到磁盘(使用第二个参数中的默认选项),然后检查标题以检查是否这是一个加密文件。
答案 2 :(得分:0)