我正在维护一个归档系统,该系统必须将各种文档格式转换为 tif。我的问题是受密码保护的 Word 文档。如果文档受密码保护,则 Word 会弹出一个响应,要求我输入密码。如果文档受密码保护,只要我可以告诉客户他需要对此采取措施,那就可以了。问题是,如果 Word 提示输入密码,我无法以编程方式注册。下面的代码是无需密码即可打开文档的标准互操作方式。如果我没有输入密码或输入错误的密码,Word 会通过弹出窗口以视觉方式提示我。除了使用 AutoHotKey 来查找弹出窗口之外,还有其他方法吗?如果我可以在文档文件中查找字符串或字符来判断它是否受到保护,那就可以了。
// Open the document...
this.document = wordApplication.Documents.Open(
ref inputFile, ref confirmConversions, ref readOnly, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref visible,
ref missing, ref missing, ref missing, ref missing);
解决方案:
可以在 Word 中的 VBA 宏中完成此操作。因此,为了从 C# 执行此操作,您需要从 C# 创建宏并执行它。我没试过。但这里是代码:
Sub MyMacro()
Dim oDoc As Document
On Error Resume Next
Set oDoc = Documents.Open(FileName:="C:\MyFile.doc", PasswordDocument:=password)
Select Case Err.Number
Case 0
Debug.Print "File was processed."
Case 5408
'Debug.Print "Wrong password!"
Case Else
MsgBox Err.Number & ":" & Err.Description
End Select