3

如何在 Microsoft Word 中获取 ActiveDocument 的 Windows 句柄?

我希望将句柄值保存到变量中。

4

2 回答 2

3

您可以使用 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 支持

于 2012-04-15T04:37:14.237 回答
0

正如蒂姆威廉姆斯指出的那样,它是Set myDoc = ActiveDocument.

于 2012-04-17T03:19:56.120 回答