[AHK]GetClassName

GetClassName,该函数获得指定窗口或控件所属的类的类名。

函数原型

int GetClassName(HWND hWnd, LPTSTR IpClassName, int nMaxCount);

参数

hWnd:窗口的句柄及间接给出的窗口所属的类。
IpClassName:指向接收窗口类名字符串的缓冲区的 指针
nMaxCount:指定由参数lpClassName指示的缓冲区的字节数。如果类名字符串大于缓冲区的长度,则多出的部分被截断。

返回值

如果函数成功,返回值为拷贝到指定缓冲区的字符个数:如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。
【AHK实现】方式如下:
;测试2: 看看 "计算器" 窗口的类名(先启动计算器)  
WinGet,h,ID,计算器  ; {这句是获取计算器窗口的句柄}  
WinGetClass, classname, ahk_id %h%
MsgBox ahk_class %classname% ;输出 {CalcFrame}  
 
;测试3: 看看记事本窗口的类名(先重新启动记事本):  
WinGet,h,ID,无标题 - 记事本  ; {这句是获取记事本窗口的句柄}  
WinGetClass, classname, ahk_id %h%
MsgBox ahk_class %classname%  ;输出 {Notepad} 



【AHK调用Dll】方式如下:

WinGet,h,ID,计算器
VarSetCapacity(c,255,0)
DllCall("GetClassNameW","int",h, "Ptr", &c, "Int", 255)  ;获取控件类
classname := StrGet(&c,255)
MsgBox %classname%



【Delphi实现】方式如下:

WinAPI: GetClassName - 获取指定窗口的类名  
//声明:  
GetClassName(  
  hWnd: HWND;         {指定窗口句柄}  
  lpClassName: PChar; {缓冲区}  
  nMaxCount: Integer  {缓冲区大小}  
): Integer;           {返回类名大小; 失败返回 0}  
--------------------------------------------------------------------------------  
  
//测试1: 新建一个工程, 主窗口的类名默认是 TForm1, 用程序获取一下看看  
var  
  ps: array[0..254] of Char;  
begin  
  GetClassName(Handle, ps, 255);  
  ShowMessage(ps); {TForm1}  
end;  
--------------------------------------------------------------------------------  
  
//测试2: 看看 "计算器" 窗口的类名(先启动计算器)  
var  
  h: HWND;  
  ps: array[0..254] of Char;  
begin  
  h := FindWindow(nil, '计算器'); {这句是获取计算器窗口的句柄}  
  GetClassName(h, ps, 255);  
  ShowMessage(ps); {SciCalc}  
end;  
--------------------------------------------------------------------------------  
  
//测试3: 看看记事本窗口的类名(先重新启动记事本):  
var  
  h: HWND;  
  ps: array[0..254] of Char;  
begin  
  h := FindWindow(nil, '无标题 - 记事本'); {这句是获取记事本窗口的句柄}  
  GetClassName(h, ps, 255);  
  ShowMessage(ps); {Notepad}  
end;  


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值