每一个窗口都属于一个窗口类,相同类型的窗口同属于一个窗口类。
窗口类名是一个非常重要的概念,在使用API时会经常被用到。
使用API函数GetClassName可以获取指定窗口的类名。
它的语法如下
int WINAPI GetClassName( _In_ HWND hWnd, _Out_ LPTSTR lpClassName, _In_ int nMaxCount );
其中参数hWnd [in] 表示要获取类名的窗口句柄,lpClassName [out]表示获取的窗口类名,nMaxCount [in] 表示窗口类名的缓冲区字符长度。
如果运行成功,该函数的返回值是实际的窗口类名的字符长度。如果运行失败,则返回0。
如以下代码是在VBA中获取桌面窗口的类名:
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Public Declare Function GetDesktopWindow Lib "user32" () As Long Sub QQ1722187970() Dim iHwnd iHwnd = GetDesktopWindow() '定义一个变量存储类名 Dim sCN As String '先填充空格 sCN = Space(255) Dim iLEN '获得实际的类名字符长度 iLEN = GetClassName(iHwnd, sCN, 256) '提取实际的类名 sCN = Left(sCN, iLEN) '输出类名 Debug.Print sCN, Len(sCN) End Sub
以下是一些常用的类名
类名 | 标题 |
excel 应用程序 | XLMAIN |
vba 编辑环境 | wndclass_desked_gsk |
vba 用户窗体 | ThunderDFrame |
腾讯窗口 | TXGuiFoundation |
vba代码窗口 | VbaWindow |
发表评论