cpp map 获取所有 key_自动获取雷电模拟器窗口句柄
每次都用命令行去获取窗口句柄虽说不麻烦,却是让人很不爽的事,今天我们就来看看如何自动获取窗口句柄。
首先,上次我们看到了获取窗口句柄是用雷电模拟器自带的命令行工具
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_自动获取雷电模拟器窗口句柄的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 如何写出漂亮的 数字字体
- 下一篇: 材料科学与计算机结合的研究方向,材料科学