每次都用命令行去获取窗口句柄虽说不麻烦,却是让人很不爽的事,今天我们就来看看如何自动获取窗口句柄。

首先,上次我们看到了获取窗口句柄是用雷电模拟器自带的命令行工具

dnconsole.exe,其实他和ldconsole.exe是一样的,我个人习惯用ldconsole.exe,看官随意。

首先,安装好雷电模拟器之后,他会在注册表里面写一些信息,我们就去读这些信息,然后通过这些信息定位到模拟器的路径,最后拼接出命令行工具的路径,然后再用python调用工具,再解析返回值,就可以顺利的获取到窗口句柄了。

注册表

下面是雷电模拟器注册表的位置以及信息。

既然知道了信息,我们就可以用他来获取了,老套路,封装一个函数,方便日后调用。

新建文件ld.py,以后所有模拟器相关操作都封装到这个文件里面。

import winreg, osdef get_ld_dir():    try:        key = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, "Software\ChangZhi2\dnplayer")        v = winreg.QueryValueEx(key, "InstallDir")        winreg.CloseKey(key)        return v[0]    except Exception as e:        print(e)        return ""                def get_ldconsole():    return os.path.join(get_ld_dir(), "ldconsole.exe")def get_hwnd_list():    result = []    cmd = "{} list2".format(get_ldconsole())    p = os.popen(cmd)    lines = p.readlines()    p.close()    for line in lines:        line = line.strip("\r")        line = line.strip("\n")        line = line.split(",")        for i in range(len(line)):            if i != 1:                line[i] = int(line[i])        result.append(line)    # 索引,标题,顶层窗口句柄,绑定窗口句柄,启动标志,进程PID,VBox进程PID    return result

函数get_ld_dir,是获取注册表里面的信息,原封不动的返回出来。

函数get_ldconsole,是将路径和我们需要的命令行工具拼接在一起,形成一个完整的路径。

函数get_hwnd_list,是调用命令行工具的list2命令获取当前已运行的所有模拟器的信息,所以最后他返回的是一个数组,比如你开了两个窗口,它就返回两个数据,以此类推,只要电脑够强悍,100开(理论上,别较真)也不是不可以的。

我们调用的时候就像这样,就可以拿到各个模拟器窗口的句柄了:

hws = get_hwnd_list()for h in hws:    print(h[3]) # 根据格式来说,句柄是第四个,所以下标是3# 格式如下:# 索引,标题,顶层窗口句柄,绑定窗口句柄,启动标志,进程PID,VBox进程PID

在我电脑上某次的输出为,我开了两个模拟器:

1348941510230

后话

那么,截图有了,句柄有了,接下来是不是就该进行图片内容分析了?

是的,就是这样,有了图片就是分析了,接下来就是有点烧脑的东西了,不过呢,我也是个半吊子,我都能搞懂,各位看官也是可以的,况且只需要了解,并不是掰开来看,是吧。^o^

cpp map 获取所有 key_自动获取雷电模拟器窗口句柄相关推荐

  1. html自动获取ip地址,自动获取ip地址怎么设置无线路由器?

    自动获取ip地址怎么设置无线路由器?如果用户的宽带类型是:自动获取IP地址上网的,那么在设置无线路由器的时候,正常情况下,只需要在"WAN口连接类型"或者"上网方式&qu ...

  2. 鼎信通达模拟无线融合网关 自动获取Ip以及相关常用指令-武汉迈思

    1)设置桥接静态IP: 1571#桥接模式 1501#静态IP 152192168188# 设置IP地址为192.168.1.88 1532552552550 # 设置子网掩码为255.255.255 ...

  3. 怎么把dns服务器改成自动,如何设置电脑上的DNS服务器自动获取

    DNS是打开网页必须要的域名解析服务器,不同地区和运营商使用的DNS也不同,很多时候网站打不开很多原因是DNS服务器不稳定导致的,那么当DNS服务器出现问题的时候我们是可以通过修改DNS的方式来访问网 ...

  4. Linux虚拟机设置自动获取IP地址

    前言 如下图所示: 对于刚刚创建的Linux虚拟机是没有ip地址的,下面我们可以修改配置使其自动获取IP 设置自动获取IP 1.这里看上图我的网卡是ens33,所以之后应找到对应的配置文件 #执行命令 ...

  5. 8.腾讯微博Android客户端开发——自动获取验证码(2)

    上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如UC.天天等,输入完QQ账号信息点击" ...

  6. HTML自动获取地址,网页中自动获取经纬度值并在地图中显示当前位置实例代码...

    下面的HTML代码就是实例完整代码,如果你需要本项目完整实例代码,下载链接在文章最底部 网页中自动获取经纬度值并在地图中显示当前位置,可在地图中进行拖动选择当前位置并输出经纬度,这是项目实例代码,可参 ...

  7. 腾讯微博Android客户端开发——自动获取验证码

    上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如UC.天天等,输入完QQ账号信息点击" ...

  8. 【React】手写虚拟滚动组件(二)可自动获取不定高度的虚拟滚动组件

    前言 上次那篇写的虚拟滚动后来使用发现在某些情况并不是特别好用,并且只支持固定高度.我看了下umihook的虚拟滚动,发现也不是很好用,它支持手动设定每个元素高度,但也不能支持不定高度,而且限定更多了 ...

  9. paip.enhes efis 自动获取文件的中文编码

    paip.enhes efis 自动获取文件的中文编码 ##为什么需要自动获取文件的中文编码 提高开发效率,自动获取文件的中文编码  .不需要手动设置编码...轻松的.. ##cpdetector 可 ...

最新文章

  1. 简单点,让论文写作简单点,老牌名校助理教授给出8个建议
  2. greta的问题及解决: LIBCMTD.lib(_wctype.obj) : error LNK2005: _iswspace already defined in xxx.obj...
  3. arduino上ESP8266用Adafruit_SSD1306库驱动OLED屏
  4. 游戏服务器端引擎——DogSE的设计
  5. SP2中修复IE浏览器的一些技巧
  6. so文件动态加载注意事项
  7. python新手入门代码-介绍十个Python小案例,新手入门就在这里
  8. discuz!net 的使用
  9. PHP5中PDO的简单使用
  10. 新北京交通限行时间、尾号查询
  11. SAR图像超分辨技术
  12. 在浏览器输入URL,按下回车之后的流程?
  13. 复制计算机软件,一键复制粘贴工具
  14. CentOS 7 Shipyard启动时一直显示省略号的解决办法
  15. Excel如何快速划分等级或成绩评级
  16. Python学多久才能独立接单赚钱?一个月足够了,本人私藏的学习计划分享给大家
  17. html广告横幅图片,制作漂亮网页横幅广告图片的PS教程
  18. 第18篇 Qt实现简单五子棋游戏(二)算法说明
  19. windows下通过cmd命令行快速进入指定文件夹
  20. 用草料二维码生成器制作App下载二维码

热门文章

  1. SQL 数据库学习04 ADB.NET
  2. lightroom使用小结五 调整作品曝光
  3. PHP是核心思路,PHP_模拟OICQ的实现思路和核心程序(二),3 在线用户的信息扫描和更新 - phpStudy...
  4. 计算复杂性理论初步(一)多项式时间归约
  5. 2020-12-21
  6. Eighth season sixth episode,the Halloween party!!!!!!
  7. 记录从零学习LaTeX的点滴
  8. Java工程师面试1000题41-50
  9. 25款免费古典唯美求职简历word模板,四页求职简历模板,含自荐信
  10. 2017 码云最火爆开源项目 TOP 50,你都用过哪些