如何在 Microsoft Word 中获取 ActiveDocument 的 Windows 句柄?
我希望将句柄值保存到变量中。
您可以使用 FindWindow 函数来获取当前活动 Word 应用程序中的窗口句柄:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
MS Word 的类名是“OpusApp”。如果您只打开了一个 Word 应用程序,则以下内容会将句柄返回到该窗口:
Public Function Test1()
Dim lhWnd As Long
lhWnd = FindWindow("OpusApp", vbNullString)
End Function
请注意,当您有多个活动的 Word 应用程序时,您可以添加窗口标题的名称。例如,如果它保存为“Stanigator.doc”,则标题将显示为“Stanigator - Microsoft Word”。所以:
Public Function Test2()
Dim lhWnd As Long
lhWnd = FindWindow(vbNullString, "Stanigator - Microsoft Word")
End Function
另一个可能派上用场的 API 是:
Private Declare Function GetActiveWindow Lib "user32" () As Long
编辑:
我将推荐 VSTO 方法,但基于此链接似乎并不明智: 连接问题:MS Word 主窗口句柄的 VSTO API 支持
正如蒂姆威廉姆斯指出的那样,它是Set myDoc = ActiveDocument
.