如何在Microsoft Word中获取ActiveDocument的Windows句柄?
我希望将句柄值保存到变量。
答案 0 :(得分:3)
您可以使用FindWindow函数在当前活动的单词应用程序中获取窗口的句柄:
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方法,但基于这个看似不明智的链接: Connect Issue: VSTO API support for MS Word Main Window Handle
答案 1 :(得分:0)
蒂姆·威廉姆斯指出,这是Set myDoc = ActiveDocument
。