当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况

金猪脚本(原飞猪脚本)以按钮向导培训为主,UiBot、Python、Lua等脚本编程语言,培训包括全自动办公脚本、游戏辅助脚本、引流脚本、Web脚本、Android脚本、IOS脚本、注册脚本、点赞脚本、

想制作脚本和学习按键精灵的朋友可以添加按键精灵学习交流群:554127455 学习路上不再孤单,金猪脚本伴你一同成长.

电脑的桌面是最顶级的窗口,在桌面里的其他程序窗口是桌面的子窗口。那到底父窗口和子窗口是怎么理解的呢?

【父窗口与子窗口】


每一个窗体form都是一个父窗口,它不是其他任一个窗体的子窗口.窗体上的所有控件,按钮等就是窗体的子窗口.一个窗口(除了窗体)既可能是父窗口,也可能是子窗口.比如窗体里面有一个frame,frame里面的控件就是frame的子窗口,但frame同时也是窗体的子窗口.就像容器里面装着容器.最大的那个容器就是窗体.每一个容器里面的东西就是其子窗口.

【常见的父窗口和子窗口的关系】

[backcolor=rgb(245, 222, 179)]

【父窗口对应一个子窗口】


1、有类名没有标题(有标题没有类名)

例如:记事本,它只有一个子窗口,子窗口只有类名没有标题。



我们要如何查找获取到这个子窗口的句柄呢?

首先,我们先复习下按键里的获取子窗口句柄的命令。

命令名称:findEx 查找子窗口命令功能:根据父窗口句柄查找子窗口匹配类名或者匹配标题命令参数:参数1 整数型,父窗口句柄参数2 整数型,子窗口句柄参数3 字符串型,匹配类名

参数4 字符串型,匹配标题

㈠ 先要获取父窗口的句柄,然后根据父窗口的句柄来找子窗口。

记事本父窗口的标题是:无标题 - 记事本 类名是:Notepad

  1. hwnd= Plugin.Window.find("Notepad" ,"无标题 - 记事本") //获取记事本父窗口句柄

复制代码

㈡ 获取到父窗口句柄之后,我们还需要知道子窗口的类名,类名为:Edit

  1. zhwnd = Plugin.Window.findex(hwnd, 0, "Edit", 0) //获取子窗口句柄

复制代码

*这里子窗口句柄的值设置为0,可能会有很多童鞋很困惑,findex命令不就是获取子窗口句柄的吗?那这里还设置一个子窗口句柄的值干嘛?我要知道还要用findex来找吗?

小编刚接触这个命令的时候,对于这个参数也非常疑惑,后来发现是这样的:

findex命令里的子窗口句柄,指的是当前要查找的子窗口上面一个子窗口的句柄。



例如上图:当我们要找创建时间这个子窗口的时候,findex命令里的子窗口句柄参数就设置为红框里子窗口的句柄。

2、没有类名也没有标题

父窗口下只有一个子窗口的情况,标题和类名不设置是可以的。

  1. hwnd= Plugin.Window.find(0,"无标题 - 记事本")
  2. zhwnd = Plugin.Window.findex(hwnd, 0, 0, 0)
  3. TracePrint zhwnd

复制代码

结果:




【父窗口对应多个子窗口】

1、多个子窗口的类名或标题不一样

拿有道云笔记窗口作为例子:



它的这两个子窗口的类名标题都不一样,这样的情况我们按照前面介绍的父窗口下只有一个子窗口的方式来查找就可以了。

代码:

  1. hwnd = Plugin.Window.find(0,"有道云笔记 Haiye")
  2. zhwnd = Plugin.Window.findex(hwnd, 0, "NETEASE POPO2007 List", 0)
  3. TracePrint zhwnd

复制代码

结果:



2、多个子窗口的类名或标题一样



有道云笔记下的这两个子窗口的类名、标题都是一样的。

  1. hwnd = Plugin.Window.find(0,"有道云笔记 Haiye")
  2. HwndEx = Plugin.Window.findex(hwnd, 0, "Po;, 0)

复制代码

上面的代码只能找到第一个类名为[backcolor=rgb(247, 247, 247)]Po[backcolor=rgb(247, 247, 247)]的子窗口,第二个无法找到。 这样的情况,该怎么找第二个呢?

在前面我们提到过,findex里的子窗口句柄这个参数,在这里我们就可以利用它。

思路如下:

1、获取父窗口句柄

2、获取第一个子窗口句柄

3、根据父窗口句柄以及第一个子窗口句柄,获取第二个子窗口句柄

代码:

  1. hwnd = Plugin.Window.find(0,"有道云笔记 Haiye")
  2. HwndEx = Plugin.Window.findex(hwnd, 0, "Po;, 0)
  3. TracePrint HwndEx
  4. HwndEx = Plugin.Window.findex(hwnd, HwndEx, "Po;, 0)
  5. TracePrint HwndEx

复制代码

结果:



【子窗口下还有子窗口】

例如按键抓抓窗口:

抓抓父窗口下类名为#32770的子窗口,它还有它的子窗口,我们如果要找#32770的子窗口下标题为句柄的窗口,该如何查找呢?

思路:

1、获取抓抓父窗口句柄

2、根据父窗口句柄找#32770的子窗口句柄

3、以#32770的子窗口作为父窗口, 继续查找下一级子窗口

代码:

  1. hwnd= Plugin.Window.find(0,"按键抓抓辅助工具2014.00.14006")
  2. zhwnd = Plugin.Window.findex(hwnd, 0, "#32770", 0)
  3. zzhwnd = Plugin.Window.findex(zhwnd, 0, 0, "句柄")
  4. TracePrint zzhwnd

复制代码

结果:



大伙儿如果有遇到获取不了子窗口句柄的情况,欢迎跟帖一起讨论~~~

1.《怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3047270.html

上一篇

怎么关闭美团商家看这里!再见了,美团

下一篇

关于怎么删除切换用户,你需要知道这些linux学习笔记——用户管理命令

关于怎么获取窗口的句柄,你需要知道这些VC|窗口对象句柄、指针、ID的获取及它们之间的转换

关于怎么获取窗口的句柄,你需要知道这些VC|窗口对象句柄、指针、ID的获取及它们之间的转换

怎么获取窗口的句柄相关介绍,SDK的WIN32 API使用句柄HANDLE操作Windows窗口,VC将HANDLE封装到CWnd类的成员变量m_hWnd中。可以通过获取该对象的m_hWnd属性来获取句柄。 同时,VC中每一个窗...