def getmenuhandle(self, handle): subHandle = win32gui.FindWindowEx(handle, 0, "EDIT", None) if subHandle == 0: menuHandle = win32gui.GetMenu(subHandle) return menuHandle else: return subHandle
def send_to_r(cmd): rid = win32gui.FindWindow("Rgui", None) if not rid: rid = win32gui.FindWindow("Rgui Workspace", None) if rid: clipboard.set_clipboard(cmd + "\n") menuitems = win32gui.GetMenu(rid) buf, extras = win32gui_struct.EmptyMENUITEMINFO() win32gui.GetMenuItemInfo(menuitems, 0, True, buf) if win32gui_struct.UnpackMENUITEMINFO(buf).text == "": editid = 2 else: editid = 1 buf, extras = win32gui_struct.EmptyMENUITEMINFO() win32gui.GetMenuItemInfo(menuitems, editid, True, buf) editmenu = win32gui_struct.UnpackMENUITEMINFO(buf).hSubMenu buf, extras = win32gui_struct.EmptyMENUITEMINFO() win32gui.GetMenuItemInfo(editmenu, 1, True, buf) pasteid = win32gui_struct.UnpackMENUITEMINFO(buf).wID win32api.PostMessage(rid, win32con.WM_SETFOCUS, pasteid, 0) sublime.set_timeout( lambda: win32api.PostMessage(rid, win32con.WM_COMMAND, pasteid, 0), 50) clipboard.reset_clipboard()
def getpausemenuitemid(self): # get the pause menu item id w = self.gettaskman() m = win32gui.GetMenu(w) sm = win32gui.GetSubMenu(m, 2) ssm = win32gui.GetSubMenu(sm, 1) pauseID = win32gui.GetMenuItemID(ssm, 3) return pauseID
def _menu_handle(self): "Simple Overridable method to get the menu handle" #return win32functions.GetMenu(self) # vvryabov: it doesn't work in 64-bit Python for x64 applications hMenu = win32gui.GetMenu(self.handle) is_main_menu = True if not hMenu: hMenu = self.send_message(self.handle, win32defines.MN_GETHMENU) is_main_menu = False return (hMenu, is_main_menu) #win32gui.GetMenu(self.handle)
def get_window_menu(hwnd): """ @param hwnd HWND @return ulong """ try: return win32gui.GetMenu(hwnd) except: return 0
def get_menu(self): """menu操作(记事本)""" menu = win32gui.GetMenu(self.handle) menu1 = win32gui.GetSubMenu(menu, 0) # 第几个菜单 0-第一个 cmd_ID = win32gui.GetMenuItemID(menu1, 3) # 第几个子菜单 win32gui.PostMessage(self.handle, win32con.WM_COMMAND, cmd_ID, 0) menu_text1 = [self.get_menu_text(menu, i) for i in range(5)] menu_text2 = [self.get_menu_text(menu1, i) for i in range(9)] print(menu_text1) print(menu_text2)
def AccountLogin_LoginFail(): try: global_TB.status = 10 if global_TB.TB_handle != 0: #times=1 if win32gui.SendMessage( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindowEx( global_TB.TB_handle, win32gui.FindWindowEx( global_TB.TB_handle, 0, 'AfxControlBar110', None), 'AfxControlBar110', None), 0, None, '帐户管理'), 0, 'SysListView32', None), LVM_GETITEMCOUNT) < 1: if global_TB.times < 150: Log('柜台关闭') global_TB.status = 11 win32gui.PostMessage( global_TB.TB_handle, win32con.WM_COMMAND, win32gui.GetMenuItemID( win32gui.GetSubMenu( win32gui.GetMenu(global_TB.TB_handle), 7), 17), 0) #帐户登录 win32gui.SendMessage( win32gui.FindWindowEx( win32gui.FindWindow('#32770', '帐户登录'), 0, 'Button', '登录(&L)'), win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) #激活窗口 time.sleep(4) win32gui.SendMessage( win32gui.FindWindowEx( win32gui.FindWindow('#32770', '帐户登录'), 0, 'Button', '登录(&L)'), win32con.BM_CLICK, 1, 0) global_TB.times = global_TB.times + 1 Log(str(global_TB.times) + ' 次登录') time.sleep(15) global_TB.Accounts = win32gui.SendMessage( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindowEx( global_TB.TB_handle, win32gui.FindWindowEx( global_TB.TB_handle, 0, 'AfxControlBar110', None), 'AfxControlBar110', None), 0, None, '帐户管理'), 0, 'SysListView32', None), LVM_GETITEMCOUNT) global_TB.Trade = 0 #else: #break; except Exception as e: Log(str(e))
def SaveWorkSpace(): try: global_TB.status = 5 if global_TB.TB_handle != 0: win32gui.PostMessage(global_TB.TB_handle, win32con.WM_COMMAND, win32gui.GetMenuItemID( win32gui.GetSubMenu( win32gui.GetMenu(global_TB.TB_handle), 0), 9), 0) #保存所有工作区 Log('保存工作区') time.sleep(2) except Exception as e: Log(str(e))
def TradeStar(): if global_TB.TB_handle != 0 and global_TB.Accounts > 0 and global_TB.Monitor_handle == 0 and global_TB.Trade == 0: try: global_TB.status = 3 win32gui.PostMessage(global_TB.TB_handle, win32con.WM_COMMAND, win32gui.GetMenuItemID( win32gui.GetSubMenu( win32gui.GetMenu(global_TB.TB_handle), 0), 22), 0) #启动所有自动交易 Log('启动交易') global_TB.Trade = 1 time.sleep(1) except Exception as e: Log(str(e))
def TradeStop(): try: global_TB.status = 7 if global_TB.TB_handle != 0: win32gui.PostMessage(global_TB.TB_handle, win32con.WM_COMMAND, win32gui.GetMenuItemID( win32gui.GetSubMenu( win32gui.GetMenu(global_TB.TB_handle), 0), 23), 0) #停止所有自动交易 #global global_TB.Trade global_TB.Trade = 0 Log('停止交易') time.sleep(2) except Exception as e: Log(str(e))
def MonitorStar(): if win32gui.FindWindow('#32770', '自动交易头寸监控器') == 0: try: global_TB.status = 4 if global_TB.TB_handle != 0 and global_TB.Accounts > 0 and global_TB.Monitor_handle == 0 and global_TB.Trade == 1: win32gui.PostMessage(global_TB.TB_handle, win32con.WM_COMMAND, win32gui.GetMenuItemID( win32gui.GetSubMenu( win32gui.GetMenu( global_TB.TB_handle), 7), 11), 0) #监控器 #print (st) Log('打开监控') time.sleep(1) #取得监控器句柄 global_TB.Monitor_handle = win32gui.FindWindow( '#32770', '自动交易头寸监控器') #win32gui.SetForegroundWindow(global_TB.Monitor_handle) #win32gui.BringWindowToTop(global_TB.Monitor_handle) #win32gui.SetActiveWindow(global_TB.Monitor_handle) #win32gui.SetFocus(global_TB.Monitor_handle) #win32gui.ShowWindow(global_TB.Monitor_handle,win32con.SW_MINIMIZE) #win32gui.ShowWindow(global_TB.Monitor_handle,5) #win32gui.SetWindowPos(global_TB.TB_handle,win32con.HWND_TOPMOST,0,0,0,0,win32con.SWP_SHOWWINDOW) #win32gui.SetWindowPos(global_TB.Monitor_handle,win32con.HWND_TOP,0,0,0,0,win32con.SWP_SHOWWINDOW) #win32gui.PostMessage(global_TB.Monitor_handle,win32con.BM_CLICK,1,0) #pos=win32gui.GetWindowRect(global_TB.Monitor_handle) win32gui.ShowWindow(global_TB.TB_handle, win32con.SW_MINIMIZE) time.sleep(1) win32gui.ShowWindow(global_TB.TB_handle, win32con.SW_MAXIMIZE) ''' win32api.SetCursorPos([1000,800]) time.sleep(1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0) time.sleep(1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0) time.sleep(1) ''' except Exception as e: Log(str(e))
def run(self): #delay time.sleep(2) # """ # 记事本实例 # """ #获取实例 notepadHhandle = win32gui.FindWindow("Notepad", None) # notepadHhandle = win32gui.FindWindow(None,"text1.txt") print ("记事本实例 %x" % (notepadHhandle)) #获取句柄 editHandle = find_subHandle(notepadHhandle, [("Edit",0)]) print ("句柄 %x" % (editHandle)) """修改edit中的值""" # win32api.SendMessage(editHandle, win32con.WM_SETTEXT, 0, "测试1") command_dict = { # [目录的编号, 打开的窗口名] "new": [0, u"新建"], "newwin": [1, u"新窗口"], "open": [2, u"打开"], "save": [3, u"保存"], "saveas": [4, u"另存为"], "quit": [9, u"退出"], } """操作菜单 另存为""" menu = win32gui.GetMenu(notepadHhandle) menu = win32gui.GetSubMenu(menu, 0) cmd_ID = win32gui.GetMenuItemID(menu, command_dict["saveas"][0]) if cmd_ID == -1: print("没有找到相应的菜单") else: print ("菜单id:%x" % (cmd_ID)) win32gui.PostMessage(notepadHhandle, win32con.WM_COMMAND, cmd_ID, 0) #window "另存为" time.sleep(2) #获取实例 notepadHhandle_save = win32gui.FindWindow(None,"另存为") print ("另存为 %x" % (notepadHhandle)) #获取编码选择句柄 notepadcombobox = win32gui.FindWindowEx(notepadHhandle_save,None,"ComboBox",None) print("编码 %x" % (notepadcombobox)) #设置为ANSI ANSI=0 UTF8=3 win32gui.PostMessage(notepadcombobox,win32con.CB_SETCURSEL,ANSI,0) #获取保存按钮句柄 notepadbutton = win32gui.FindWindowEx(notepadHhandle_save,None,"Button","保存(&S)") print("另存为按钮 %x" % (notepadbutton)) #回车 win32gui.PostMessage(notepadbutton, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0) win32gui.PostMessage(notepadbutton, win32con.WM_KEYUP, win32con.VK_RETURN, 0) #window "确认另存为" time.sleep(2) #获取实例 notepadHhandle_confirmsave = win32gui.FindWindow(None,"确认另存为") print ("确认另存为 %x" % (notepadHhandle_confirmsave)) win32gui.EnumChildWindows(notepadHhandle_confirmsave,self.get_child_windows, None) for widget in self.widgets: # print(widget['handle']) # print(widget['class']) # print(widget['title']) # print(widget['pos']) if widget['title'] == "是(&Y)" and widget['class'] == "Button": print(widget['title']) print(widget['class']) print(widget['pos']) # print(widget['pos'][1]) point = (widget['pos'][0], widget['pos'][1]) win32api.SetCursorPos(point) #点击鼠标 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) #关闭记事本 time.sleep(2) cmd_ID = win32gui.GetMenuItemID(menu, command_dict["quit"][0]) if cmd_ID == -1: print("没有找到相应的菜单") else: print ("菜单id:%x" % (cmd_ID)) win32gui.PostMessage(notepadHhandle, win32con.WM_COMMAND, cmd_ID, 0)
def Export_fbk(): try: while win32gui.FindWindow('#32770', '导入/导出公式') == 0: win32gui.EnumWindows(handle_window, '交易开拓者') if win32gui.FindWindow('#32770', '自动交易头寸监控器') != 0: time.sleep(2) win32gui.ShowWindow(win32gui.FindWindow('#32770', '自动交易头寸监控器'), win32con.SW_MINIMIZE) time.sleep(1) #win32gui.BringWindowToTop(global_TB.TB_handle) #win32gui.ShowWindow(win32gui.FindWindowEx(win32gui.FindWindowEx(win32gui.FindWindowEx(global_TB.TB_handle,None,'AfxControlBar110','PanelFrame'),None,0,'PanelFrame'),None,'AfxWnd110',None),win32con.SW_MAXIMIZE) time.sleep(1) win32gui.PostMessage(global_TB.TB_handle, win32con.WM_COMMAND, win32gui.GetMenuItemID( win32gui.GetSubMenu( win32gui.GetMenu(global_TB.TB_handle), 1), 1), 0) #面板 F3 time.sleep(3) pos = win32gui.GetWindowRect( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindowEx(global_TB.TB_handle, None, 'AfxControlBar110', 'PanelFrame'), None, 0, 'PanelFrame'), None, 'AfxWnd110', None)) time.sleep(1) win32api.SetCursorPos([int((pos[0] + pos[2]) / 2), pos[3] - 35]) time.sleep(1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) time.sleep(1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) time.sleep(1) win32api.SetCursorPos([int((pos[0] + pos[2]) / 2), pos[1] + 255]) time.sleep(1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) time.sleep(1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) time.sleep(3) win32gui.PostMessage( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '导入/导出公式'), None, 'Button', '下一步(&N) >'), win32con.BM_CLICK, 1, 0) time.sleep(1) win32gui.PostMessage( win32gui.FindWindowEx( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '导出公式'), None, '#32770', '导出公式'), None, 'Button', '>>'), win32con.BM_CLICK, 1, 0) time.sleep(1) win32gui.PostMessage( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '导出公式'), None, 'Button', '下一步(&N) >'), win32con.BM_CLICK, 1, 0) time.sleep(1) win32gui.PostMessage( win32gui.FindWindowEx( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '导出公式'), None, '#32770', '导出公式'), None, 'Button', '浏览(&O)...'), win32con.BM_CLICK, 1, 0) time.sleep(1) win32gui.SendMessage( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindowEx( win32gui.FindWindow('#32770', '保存公式备份文件'), None, 'DUIViewWndClassName', None), None, 'DirectUIHWND', None), None, 'FloatNotifySink', None), None, 'ComboBox', None), None, 'Edit', None), win32con.WM_SETTEXT, 0, global_TB.fbk) #%H%M%S time.sleep(1) win32gui.PostMessage( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '保存公式备份文件'), None, 'Button', '保存(&S)'), win32con.BM_CLICK, 1, 0) time.sleep(1) win32gui.PostMessage( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '导出公式'), None, 'Button', '完成'), win32con.BM_CLICK, 1, 0) time.sleep(1) win32gui.PostMessage( win32gui.FindWindowEx(win32gui.FindWindow('#32770', '提示'), None, 'Button', '确定'), win32con.BM_CLICK, 1, 0) time.sleep(1) except Exception as e: Log(str(e))
import win32gui import win32api import win32con import pyperclip import win32ui import time mainWindow_name = u'YINCHUAN TERMINAL DVOR - Dual DVOR - SELEX Systems Integration Inc. PMDT' MW_hwnd = win32gui.FindWindow(None, mainWindow_name) main_menu = win32gui.GetMenu(MW_hwnd) aim_menu = win32gui.GetSubMenu(main_menu, 2) cmd_ID = win32gui.GetMenuItemID(aim_menu, 0) win32gui.PostMessage(MW_hwnd, win32con.WM_COMMAND, cmd_ID, 0) print("%x" % (MW_hwnd)) time.sleep(1) dialog = win32gui.FindWindowEx(MW_hwnd, None, '#32770', None) copy_btn = win32gui.FindWindowEx(dialog, None, 'Button', 'Copy') print("%x" % (copy_btn)) win32gui.PostMessage(copy_btn, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0) win32gui.PostMessage(copy_btn, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0) # win32gui.PostMessage(dialog, win32con.WM_COMMAND, copy_btn, 0) text = pyperclip.paste() print(text) # hwnd = win32gui.FindWindow(None, "YINCHUAN TERMINAL DVOR - Dual DVOR - SELEX Systems Integration Inc. PMDT") # hwnd = win32gui.FindWindow(None, "PMDT") # print(hwnd) # name = 'hello' # pyperclip.copy(name)
import win32api import win32con import win32gui # 得到父窗体句柄(主窗体) # handle = win32gui.FindWindow(None,"ToolbarWindow32") # {窗口标题:Caption}, {窗口类名:Class} handle = 0x00071180 menu = win32gui.GetMenu(handle) # 菜单 menu1 = win32gui.GetSubMenu(menu, 1) # 第几个菜单 cmd_ID = win32gui.GetMenuItemID(menu1, 10) # 第几个子菜单 # 发送事件消息给菜单 #win32gui.PostMessage(hwnd, win32con.WM_COMMAND, cmd_ID, 1) # 获取菜单的文本内容 def get_menu_item_txt(menu, idx): import win32gui_struct mii, extra = win32gui_struct.EmptyMENUITEMINFO() # 新建一个win32gui的空的结构体mii win32gui.GetMenuItemInfo(menu, idx, True, mii) ftype, fstate, wid, hsubmenu, hbmpchecked, hbmpunchecked,\ dwitemdata, text, hbmpitem = win32gui_struct.UnpackMENUITEMINFO(mii) # 解包mii return text # 遍历显示出菜单文本 for i in range(5): print(get_menu_item_txt(menu, i)) for i in range(5): print(get_menu_item_txt(menu1, i))
#!/usr/bin/env python # -*- coding:utf-8 -*- import win32con import win32gui import win32api import time # 以qq为例子 qqWin = win32gui.FindWindow("TXGuifoundation", "QQ") # 接收两个参数,一个是程序的类,一个是标题.目的是找到窗体 print(qqWin) # 获得窗口的菜单句柄 menuHandle = win32gui.GetMenu(qqWin) print(menuHandle) # 获得子菜单或下拉菜单句柄 # 参数:菜单句柄 子菜单索引号 subMenuHandle = win32gui.GetSubMenu(menuHandle, 0) print(subMenuHandle) # # 搜索子窗口 # # 枚举子窗口 # hwndChildList = [] # win32gui.EnumChildWindows(qqWin, lambda hwnd, param: param.append(hwnd), hwndChildList) # print(hwndChildList) while True: # # 然后让窗体显示出来 # win32gui.ShowWindow(qqWin, win32con.SW_SHOW)
def __init__(self, fgFilePath=None): self.Mhandle = win32gui.FindWindow("FaceGenMainWinClass", None) self.menu = win32gui.GetMenu(self.Mhandle) # the first sub menu to linitialize self.menu = win32gui.GetSubMenu(self.menu, 0) print "FaceGen initialization compeleted"
except WindowsError: print "dnplayer InstallDir query failed. not installed in the system, please install it before using this script" sys.exit(0) # 获取窗口位置 left, top, right, bottom = win32gui.GetWindowRect(handle) #获取某个句柄的类名和标题 title = win32gui.GetWindowText(handle) clsname = win32gui.GetClassName(handle) print 'Title of ldplayer:', title print 'Class of ldplayer:', clsname # 十进制 print 'Handle of ldplayer:',"%x" %(handle) # 搜索子窗口 # 枚举子窗口 hwndChildList = [] win32gui.EnumChildWindows(handle, lambda hwnd, param: param.append(hwnd), hwndChildList) print 'Child Windows:', hwndChildList menuHandle = win32gui.GetMenu(handle) print menuHandle my_window = pyautogui.getWindow(u'雷电模拟器') print my_window my_window.resize(400, 400) my_window.moveRel(x=0, y=0)
hwnd = win32gui.WindowFromPoint(pt) w0, h0, w1, h1 = win32gui.GetWindowRect(hwnd) focus = win32gui.GetFocus() #win32gui.DrawFocusRect( hwnd, (w0, h0, w1, h1)) #win32gui.DrawEdge( hwnd, (w0, h0, w1, h1), win32con.BDR_INNER, win32con.BF_ADJUST) print( "my point:",w0, h0, w1, h1 ) print( "client point:", win32gui.GetClientRect(hwnd)) parent = win32gui.GetParent( hwnd ) active = win32gui.GetActiveWindow() print("window placement: ", win32gui.GetWindowPlacement(hwnd)) childwindow = win32gui.ChildWindowFromPoint(hwnd, win32gui.GetCursorPos()) print( "capture : ", win32gui.GetCapture()) window = win32gui.GetWindow(hwnd, 1) win32gui.SendMessage( hwnd, 1, None, None) desktop = win32gui.GetDesktopWindow() menu = win32gui.GetMenu(hwnd) cursorinfo = win32gui.GetCursorInfo() foreground = win32gui.GetForegroundWindow() hdc = win32gui.GetDC(hwnd) #win32gui.PolylineTo(hdc, ((w0, h0), (w1, h0), (w1, h1), (w0, h1), (w0,h0))) obj = win32gui.GetCurrentObject(hdc, win32con.OBJ_BITMAP) stockobj = win32gui.GetStockObject(obj) sysmenu = win32gui.GetSystemMenu(hwnd, 1) print("1. desktop : ", desktop) print("2. window : ", window) print("3. hwnd : ", hwnd )
# 十进制 print(handle) # 十六进制 print("%x" %(handle) ) # 搜索子窗口 # 枚举子窗口 hwndChildList = [] win32gui.EnumChildWindows(handle, lambda hwnd, param: param.append(hwnd), hwndChildList) # FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None) 父窗口句柄 若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个子窗体开始搜索。 子窗口类名 子窗口标题 subHandle = win32gui.FindWindowEx(handle, 0, "EDIT", None) # 获得窗口的菜单句柄 menuHandle = win32gui.GetMenu(subHandle) # 获得子菜单或下拉菜单句柄 # 参数:菜单句柄 子菜单索引号 subMenuHandle = win32gui.GetSubMenu(menuHandle, 0) # 获得菜单项中的的标志符,注意,分隔符是被编入索引的 # 参数:子菜单句柄 项目索引号 menuItemHandle = win32gui.GetMenuItemID(subMenuHandle, 0) # 发送消息,加入消息队列,无返回 # 参数:句柄 消息类型 WParam IParam win32gui.postMessage(subHandle, win32con.WM_COMMAND, menuItemHandle, 0) # wParam的定义是32位整型,high word就是他的31至16位,low word是它的15至0位。 # 当参数超过两个,wParam和lParam不够用时,可以将wParam就给拆成两个int16来使用。 # 这种时候在python里记得用把HIWORD的常数向左移16位,再加LOWORD,即wParam = HIWORD<<16+LOWORD。
import win32gui wdname = "TOPRice_2.4.2_CN" hwnd = win32gui.FindWindow(None, wdname) print(hwnd) text = win32gui.GetWindowText(hwnd) # 获取窗口标题 print('窗口标题为:', text) clsname = win32gui.GetClassName(hwnd) # 获取窗口类名 print('窗口类名:', clsname) left, top, right, bottom = win32gui.GetWindowRect(hwnd) # 获取窗口位置 # left, top是左上角坐标;right, bottom是右下角坐标 print('窗口位置', left, top, right, bottom) menuHandle = win32gui.GetMenu(hwnd) # 获取窗口的菜单句柄 print('记事本菜单句柄:', menuHandle) # 关闭窗口 win32gui.CloseWindow(hwnd) # #获取第一个子UI句柄 # w2hd=win32gui.FindWindowEx(hwnd,None,None,"File") # print(w2hd) # 调用win32gui.EnumWindows()枚举所有窗口句柄 # hWndList = [] # win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList) # for hwnd in hWndList: # title = win32gui.GetWindowText(hwnd) # print(title)