无锡培训网站建设,wordpress 积分插件,做音乐网站需要什么,惠州建设银行行号查询网站一、概念 句柄指的是操作系统为了标识和访问对象而提供的一个标识符#xff0c;在操作系统中#xff0c;每个对象都有一个唯一的句柄#xff0c;通过句柄可以访问对象的属性和方法。例如文件、进程、窗口等都有句柄。在编程中#xff0c;可以通过句柄来操作这些对象#x…一、概念 句柄指的是操作系统为了标识和访问对象而提供的一个标识符在操作系统中每个对象都有一个唯一的句柄通过句柄可以访问对象的属性和方法。例如文件、进程、窗口等都有句柄。在编程中可以通过句柄来操作这些对象从而实现对系统资源的控制和管理。
二、实战
1、获取当前所有窗口的句柄
def get_all_window():hwnd_list []win32gui.EnumWindows(lambda hwnd, param: param.append(hwnd), hwnd_list)return hwnd_list 2、从所有窗口句柄中根据窗口标题title获取想要的特定窗口句柄
def get_hwnd_from_name(name)hwnd_list []all_hwnd_list get_all_window() # 调用上面的方法for hwnd in all_hwnd_list:title win32gui.GetWindowText(hwnd) # 根据窗口句柄获取句柄对应的窗口的标题if title name:hwnd_list.append(hwnd)logging.info(f窗口标题为{name}的所有窗口的句柄{hwnd_list})return hwnd_list
3、根据窗口句柄获取一些别的信息适用于窗口句柄不唯一但是标题、类名等值唯一的情况
def get_windows_info(hwnd):all_hwnd_list get_all_window() # 调用上面的方法for hwnd in all_hwnd_list:# 获取窗口标题title win32gui.GetWindowText(hwnd)# 获取窗口类名clsname win32gui.GetClassName(hwnd)# 获取窗口位置和大小rect win32gui.GetWindowRect(hwnd)# 获取窗口所在的进程ID和线程IDpid, tid win32process.GetWindowThreadProcessId(hwnd)# 返回窗口的属性信息return {title: title, class: clsname, rect: rect, pid: pid, tid: tid}4、获取主窗口句柄根据其子窗口的标题获取该子窗口对象然后点击子窗口
def blurred_click_button_in_window(titleXX, Buttons状态):handle get_hwnd_from_name(title) # 调用上面的方法# handle handle[0] # 如果列表有多个值则需要确认你想要的窗口句柄是哪一个print(f获取到的窗口句柄是{handle})time.sleep(1)app Application(backenduia).connect(handlehandle) # 连接到此窗口try:win32gui.SetForegroundWindow(handle) # 将窗口置顶避免被遮挡except Exception as e:logging.info(f{e})main_window app.window(handlehandle) # 获取主窗口对象main_window.print_control_identifiers() # 打印出此主窗口包含的所有子窗口的信息(title,auto_id,control_type)child_window main_window.child_window(title_reButtons, found_index0) #根据子窗口的标题获取子窗口对象_re表示模糊匹配found_index0适用于title不唯一时取索引为第一位的也可根据类名来获取child_window main_window.child_window(class_nameEdit)child_window.click_input() # 点击子窗口如果是输入框赋值可以写成child_window.type_keys(Cc)return main_window