api函数FindWindow可以根据指定的类名和窗口标题名称获得顶层窗口的句柄。
这个函数并不会查找子窗口,而且它也不区分大小写。
FindWindow函数的C++语法如下:
HWND WINAPI FindWindow( _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowName );
FindWindow函数的VB声明如下:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
其中参数lpClassName为指定的类名,如果为空,则查找窗口的标题满足lpWindowName参数的窗口。
如果参数lpClassName和lpWindowName都为空的话,FindWindow函数返回的是其中一个顶层窗口的句柄。
比如excel应用程序的类名为”XLMAIN”,则可以使用如下的代码获取当前excel应用程序的句柄:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Sub QQ1722187970() Dim hwnd As Long '用内置的属性获得excel应用程序句柄 hwnd = Excel.Application.hwnd '用 FindWindow获得excel应用程序句柄 i = FindWindow("XLMAIN", vbNullString) '对比两个句柄值 Debug.Print hwnd, i End Sub
发表评论