VS2015中获取Windows窗口控件信息(2-1)

在VS2015中,可以通过API函数获取Windows窗口中控件的信息,包括控件句柄、控件显示的文字以及控件类型等。其流程为,首先获取Windows指定窗口的句柄,之后通过回调函数遍历该窗口中的控件句柄,最后通过控件句柄获取控件文字及类型。

1 获取窗口句柄

可以通过FindWindow()函数获取指定窗口的句柄。该函数的格式为

HWND FindWindowA(

LPCSTR lpClassName

, LPCSTR lpWindowName

);

其中,参数lpClassName指定了窗口所属的类名;lpWindowName指定了窗口的标题。如果函数执行成功,则返回指定窗口的句柄,否则返回值是NULL。

通过FindWindow()函数,有两种方法获取指定窗口句柄。一种方法是指定窗口所属的类名称,另外一种是指定窗口的标题。例如,在Windows中,可以通过鼠标右键可以查看某个文件的属性,该属性窗口为图1所示。

 

图1 png文件属性窗口

可以通过以下代码获取该窗口的句柄

HWND hwnd;

hwnd = FindWindow(NULL, L"图片1.png 属性");

其中,HWND是窗口句柄类型,FindWindow()函数的第一个参数是NULL,第二个参数指定了窗口的标题,即通过窗口标题查找窗口。

2 遍历窗口控件。

如果成功获取了指定窗口句柄,接下来调用API函数EnumChildWindows()函数开始遍历控件。

2.1 EnumChildWindows()函数

该函数的格式为

BOOL EnumChildWindows(

HWND hWndParent

, WNDENUMPROC lpEnumFunc

, LPARAM lParam

);

其中参数hWndParent是指定窗口的句柄;lpEnumFunc是一个系统定义好的回调函数,系统会将窗口中每个控件的句柄依次给这个回调函数,并依次调用该回调函数。在lpEnumFunc回调函数中通过控件的句柄获取控件的信息;lParam是传递给回调函数的参数。如果每次调用回调函数成功,则EnumChildWindows()函数直到所有的控件都被遍历后才会返回TRUE,如果回调函数调用失败,则EnumChildWindows()函数直接返回FALSE。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值