如何在vba中用api回调函数EnumWindowsProc遍历顶层窗口? - API - ExcelOffice

如何在vba中用api回调函数EnumWindowsProc遍历顶层窗口?





一个没有父窗口,或者父窗口是桌面窗口的窗口称为顶层窗口。

遍历顶层窗口可以使用api函数EnumWindows函数和EnumWindowsProc回调函数。

其中EnumWindows函数可以通过依次轮流的将所有顶层窗口的句柄传递给回调函数的方式遍历所有顶层窗口,直到遍历到最后一个顶层窗口或者回调函数返回False。它的语法如下:

其中参数lpEnumFunc [in] 表示的是指向回调函数的指针,参数lParam [in]表示的是任意一个可以传递给回调函数的值。它的返回值是个逻辑值,如果运行成功,返回是非0值。
EnumWindowsProc 回调函数的语法如下

它的参数hwnd [in]表示每一个顶层窗口的句柄,lParam [in] 表示的是由EnumWindows的第2参数传递过来的值。如果要让回调函数不断地运行,它的返回值必须是True,否则就返回Flase中断运行。另外EnumWindowsProc只是回调函数的占位符,可以改成任何自己想要的函数名称。

以下是一个示例代码获取所有顶层窗口的类名、标题名称、句柄,并且可以按照标题关键字模糊查询的代码:

 

打赏

发表评论