日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/1/1 编程问答 153 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_自动获取雷电模拟器窗口句柄的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。