怎样判断word是否被加密?是WORD软件中设置的加密.(VC++,请附加代码!)

解决方案 »

  1.   

    微软有C#,VB版本的,看能否转换成VC的
      

  2.   

    一个笨拙的的方法是用try。。catch进行Documents接口的Open方法的捕获,当正常不填写第五个参数PasswordDocument时,如果有异常抛出,那就说明此word文档需要密码,然后你再一次调用open方法,填写第五个参数
      

  3.   

    fishion兄,但是对于一个已经损坏的文件也一样的Open不开啊
      

  4.   

    第十三个参数OpenAndRepairOpenAndRepair
    Optional Object. True to repair the document to prevent document corruption.下面是MSDN中的原话“在您打开某个文档时,如果 Microsoft Word 检测到文档有问题,它会自动使用“打开并修复”功能。但是,您可以强制 Word 在打开任何文档时均使用“打开并修复”功能。如果您打算将文档保存为其他文件格式,这可能特别有用。如果您将损坏的文档保存为其他文件格式,可能无法打开保存的文档。 有关如何处理损坏的 Word 文档的问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:” 设置为true,如果文档文档是不完整的,应该也不会抛出异常,那样如果当你没填密码时抛出异常的话,那就说明有密码了
      

  5.   

    还有一个问题,我怎么没有找到关于OpenAndRepair的信息呢,在哪儿
      

  6.   

    Documents接口的Open方法的第十三个参数OpenAndRepair
      

  7.   

    我用了一个已损坏的文件去open结果还是一样抛出异常
      

  8.   

    更粗糙的方法是NoEncodingDialog设置为false,再打开的时候检查密码输入框是否出现。。
    还有没有其它方法我就不清楚了
      

  9.   

    最后问你个问题,你这些参数说明怎么我的MSDN上没有呢,该哪儿去下完整版的呢
      

  10.   

    再不是就打开文档两次,第一次设置 NoEncodingDialog为true,如果没有异常抛出,第二次调用时设置 NoEncodingDialog 为false
    下面是MSDN的文档
    http://msdn.microsoft.com/de-de/library/microsoft.office.interop.word.documents.open(v=office.11).aspx
      

  11.   

    看看MSDN关于VBA的说明
    看看有没有相应的函数
    然后通过com接口调用