已知窗口id获取句柄的方法

窗口 ID 和窗口句柄是两个不同的概念,窗口 ID 是一个数字,用于标识窗口,而窗口句柄是一个指向窗口的指针。在 Windows 系统中,每个窗口都有一个唯一的窗口句柄。 如果已知窗口 ID,可以通过以下方法获取窗口句柄

  1. 使用 FindWindow 函数 使用 win32gui 模块的 FindWindow 函数可以根据窗口的类名和窗口标题查找窗口句柄。例如:
import win32gui
window_id = "12345"  # 窗口 ID
class_name = "Notepad"  # 窗口类名
window_title = "Untitled - Notepad"  # 窗口标题
window_handle = win32gui.FindWindow(class_name, window_title)

需要注意的是,窗口 ID 必须是字符串类型,窗口类名和窗口标题可以是字符串或 None。

2. 使用 FindWindowEx 函数 使用 win32gui 模块的 FindWindowEx 函数可以在指定窗口的所有子窗口中查找窗口句柄。可以根据窗口 ID 和子窗口类名来查找窗口句柄。例如:

import win32gui
parent_id = 0x012345  # 父窗口句柄
child_id = 0x67890  # 子窗口 ID
child_class_name = "Edit"  # 子窗口类名
child_handle = win32gui.FindWindowEx(parent_id, 0, child_class_name, str(child_id))

需要注意的是,子窗口 ID 必须是字符串类型。 以上是通过窗口 ID 获取窗口句柄的方法,需要注意的是,窗口 ID 只在某些情况下可用,例如在使用 SendMessageTimeout 函数发送消息时,可以使用窗口 ID 代替窗口句柄。