上節課通過進程名稱獲取進程ID,然后再通過進程ID來獲取窗口句柄,本課直接通過進程名稱來獲取窗口句柄,其實是對 進程_名取ID 和 進程_ID取窗口句柄 一個應用組合封裝。通過進程名稱取得相應的窗口的句柄易語言取游戲窗口句柄,成功返回窗口句柄,失敗返回0易語言取游戲窗口句柄,返回-1表示為找到進程PID
511遇見易語言模塊API教程
進程名取ID
.版本 2
.子程序 進程_名取ID, 整數型, 公開, 通過進程影像名稱來獲取進程ID,失敗返回 0
.參數 進程名, 文本型, , 要取的進程的名稱
.參數 是否區分大小寫, 邏輯型, 可空, 為空默認不區分大小寫,真為區分大小寫
.局部變量 進程快照, 整數型
.局部變量 局_進程信息, 進程信息列表

.局部變量 進程句柄, 整數型
' 參數選2 表示:在快照中包含系統中所有的進程。
進程快照 = CreateToolhelp32Snapshot (2, 0)
.如果真 (進程快照 = 0)
返回 (0)
.如果真結束
' 初始化進程信息列表
局_進程信息.dwSize = 512

' 獲取第一個進程句柄
進程句柄 = Process32First (進程快照, 局_進程信息)
.判斷開始 (是否區分大小寫)
.判斷循環首 (進程句柄 ≠ 0)
.如果真 (到文本 (局_進程信息.進程名稱) = 進程名)
CloseHandle (進程快照)
返回 (局_進程信息.進程ID)
.如果真結束
進程句柄 = Process32Next (進程快照, 局_進程信息)

.判斷循環尾 ()
.默認
.判斷循環首 (進程句柄 ≠ 0)
.如果真 (到小寫 (到文本 (局_進程信息.進程名稱)) = 到小寫 (進程名))
CloseHandle (進程快照)
返回 (局_進程信息.進程ID)
.如果真結束
進程句柄 = Process32Next (進程快照, 局_進程信息)
.判斷循環尾 ()

.判斷結束
CloseHandle (進程快照)
返回 (0)
進程名取句柄 源碼
.版本 2
.子程序 進程_名取句柄, 整數型, 公開, 通過進程名稱取得相應的窗口的句柄,成功返回窗口句柄,失敗返回0,返回-1表示為找到進程PID

.參數 進程名, 文本型, , 要獲取的窗口句柄的進程名稱
.局部變量 pid, 整數型, , , 進程ID
.局部變量 hwnd, 整數型, , , 窗口句柄
pid = 進程_名取ID (進程名, )
.如果真 (pid ≠ 0)
返回 (進程_ID取窗口句柄 (pid, , , ))
.如果真結束
返回 (-1)
參考:易語言模塊API制作系列視頻教程
易語言模塊API教程進程名取句柄