我们从Python开源项目中,提取了以下31个代码示例,用于说明如何使用win32gui.error()。
def __init__(self, netkeeper): msg_TaskbarRestart = win32gui.RegisterWindowMessage("NKService") message_map = { msg_TaskbarRestart: self.OnRestart, win32con.WM_DESTROY: self.OnDestroy, win32con.WM_COMMAND: self.OnCommand, win32con.WM_USER + 20: self.OnTaskbarNotify, } # ????? wndclass = win32gui.WNDCLASS() hinst = wndclass.hInstance = win32api.GetModuleHandle(None) wndclass.lpszClassName = "NetkeeperTrayIcon" wndclass.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW wndclass.hCursor = win32api.LoadCursor(0, win32con.IDC_ARROW) wndclass.hbrBackground = win32con.COLOR_WINDOW wndclass.lpfnWndProc = message_map try: classAtom = win32gui.RegisterClass(wndclass) except win32gui.error, err_info: if err_info.winerror != winerror.ERROR_CLASS_ALREADY_EXISTS: raise style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU self.hwnd = win32gui.CreateWindow(wndclass.lpszClassName, 'NetKeeper Service', style, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, hinst, None) win32gui.UpdateWindow(self.hwnd) self.netkeeper = netkeeper self._createIcon()
def _createIcon(self): hinst = win32api.GetModuleHandle(None) iconPathName = "" if os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print '???icon???????' hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, "NetKeeper Service") try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32gui.error: print "Failed to add the taskbar icon - is explorer running?"
def _CreateMainWindow(self, prev, settings, browser, rect): # Creates a parent window that hosts the view window. This window # gets the control notifications etc sent from the child. style = win32con.WS_CHILD | win32con.WS_VISIBLE # wclass_name = "ShellViewDemo_DefView" # Register the Window class. wc = win32gui.WNDCLASS() wc.hInstance = win32gui.dllhandle wc.lpszClassName = wclass_name wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW try: win32gui.RegisterClass(wc) except win32gui.error, details: # Should only happen when this module is reloaded if details[0] != winerror.ERROR_CLASS_ALREADY_EXISTS: raise message_map = { win32con.WM_DESTROY: self.OnDestroy, win32con.WM_COMMAND: self.OnCommand, win32con.WM_NOTIFY: self.OnNotify, win32con.WM_CONTEXTMENU: self.OnContextMenu, win32con.WM_SIZE: self.OnSize, } self.hwnd = win32gui.CreateWindow( wclass_name, "", style, \ rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1], self.hwnd_parent, 0, win32gui.dllhandle, None) win32gui.SetWindowLong(self.hwnd, win32con.GWL_WNDPROC, message_map) print "View 's hwnd is", self.hwnd return self.hwnd
def CreateViewWindow(self, prev, settings, browser, rect): print "ScintillaShellView.CreateViewWindow", prev, settings, browser, rect # Make sure scintilla.dll is loaded. If not, find it on sys.path # (which it generally is for Pythonwin) try: win32api.GetModuleHandle("Scintilla.dll") except win32api.error: for p in sys.path: fname = os.path.join(p, "Scintilla.dll") if not os.path.isfile(fname): fname = os.path.join(p, "Build", "Scintilla.dll") if os.path.isfile(fname): win32api.LoadLibrary(fname) break else: raise RuntimeError("Can't find scintilla!") style = win32con.WS_CHILD | win32con.WS_VSCROLL | \ win32con.WS_HSCROLL | win32con.WS_CLIPCHILDREN | \ win32con.WS_VISIBLE self.hwnd = win32gui.CreateWindow("Scintilla", "Scintilla", style, rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1], self.hwnd_parent, 1000, 0, None) message_map = { win32con.WM_SIZE: self.OnSize, } # win32gui.SetWindowLong(self.hwnd, win32con.GWL_WNDPROC, message_map) file_data = file(self.filename, "U").read() self._SetupLexer() self._SendSci(scintillacon.SCI_ADDTEXT, len(file_data), file_data) if self.lineno != None: self._SendSci(scintillacon.SCI_GOTOLINE, self.lineno) print "Scintilla's hwnd is", self.hwnd
def __init__(self): msg_TaskbarRestart = win32gui.RegisterWindowMessage("TaskbarCreated"); message_map = { msg_TaskbarRestart: self.OnRestart, win32con.WM_DESTROY: self.OnDestroy, win32con.WM_COMMAND: self.OnCommand, win32con.WM_USER+20 : self.OnTaskbarNotify, } # Register the Window class. wc = win32gui.WNDCLASS() hinst = wc.hInstance = win32api.GetModuleHandle(None) wc.lpszClassName = "PythonTaskbarDemo" wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW; wc.hCursor = win32api.LoadCursor( 0, win32con.IDC_ARROW ) wc.hbrBackground = win32con.COLOR_WINDOW wc.lpfnWndProc = message_map # could also specify a wndproc. # Don't blow up if class already registered to make testing easier try: classAtom = win32gui.RegisterClass(wc) except win32gui.error, err_info: if err_info.winerror!=winerror.ERROR_CLASS_ALREADY_EXISTS: raise # Create the Window. style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU self.hwnd = win32gui.CreateWindow( wc.lpszClassName, "Taskbar Demo", style, \ 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \ 0, 0, hinst, None) win32gui.UpdateWindow(self.hwnd) self._DoCreateIcons()
def _DoCreateIcons(self): # Try and find a custom icon hinst = win32api.GetModuleHandle(None) iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in DLLs dir, a-la py 2.5 iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "DLLs", "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in the source tree. iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "..\\PC\\pyc.ico" )) if os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print "Can't find a Python icon file - using default" hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "Python Demo") try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32gui.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print "Failed to add the taskbar icon - is explorer running?" # but keep running anyway - when explorer starts, we get the # TaskbarCreated message.
def new_icon(hdesk,desktop_name): """ Runs as a thread on each desktop to create a new tray icon and handle its messages """ global id id=id+1 hdesk.SetThreadDesktop() ## apparently the threads can't use same hinst, so each needs its own window class windowclassname='PythonDesktopManager'+desktop_name wc = win32gui.WNDCLASS() wc.hInstance = win32api.GetModuleHandle(None) wc.lpszClassName = windowclassname wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW | win32con.CS_GLOBALCLASS wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW ) wc.hbrBackground = win32con.COLOR_WINDOW wc.lpfnWndProc = icon_wndproc windowclass = win32gui.RegisterClass(wc) style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU hwnd = win32gui.CreateWindow(windowclass, 'dm_'+desktop_name, win32con.WS_SYSMENU, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, wc.hInstance, None) win32gui.UpdateWindow(hwnd) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP notify_info = (hwnd, id, flags, win32con.WM_USER+20, hicon, 'Desktop Manager (%s)' %desktop_name) window_info[hwnd]=notify_info ## wait for explorer to initialize system tray for new desktop tray_found=0 while not tray_found: try: tray_found=win32gui.FindWindow("Shell_TrayWnd",None) except win32gui.error: traceback.print_exc time.sleep(.5) win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, notify_info) win32gui.PumpMessages()
def _RegisterWndClass(self): className = "PythonDocSearch" message_map = {} wc = win32gui.WNDCLASS() wc.SetDialogProc() # Make it a dialog class. wc.hInstance = self.hinst wc.lpszClassName = className wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW ) wc.hbrBackground = win32con.COLOR_WINDOW + 1 wc.lpfnWndProc = message_map # could also specify a wndproc. # C code: wc.cbWndExtra = DLGWINDOWEXTRA + sizeof(HBRUSH) + (sizeof(COLORREF)); wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi") icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE ## py.ico went away in python 2.5, load from executable instead this_app=win32api.GetModuleHandle(None) try: wc.hIcon=win32gui.LoadIcon(this_app, 1) ## python.exe and pythonw.exe except win32gui.error: wc.hIcon=win32gui.LoadIcon(this_app, 135) ## pythonwin's icon try: classAtom = win32gui.RegisterClass(wc) except win32gui.error, err_info: if err_info.winerror!=winerror.ERROR_CLASS_ALREADY_EXISTS: raise return className
def _CreateMainWindow(self, prev, settings, browser, rect): # Creates a parent window that hosts the view window. This window # gets the control notifications etc sent from the child. style = win32con.WS_CHILD | win32con.WS_VISIBLE # wclass_name = "ShellViewDemo_DefView" # Register the Window class. wc = win32gui.WNDCLASS() wc.hInstance = win32gui.dllhandle wc.lpszClassName = wclass_name wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW try: win32gui.RegisterClass(wc) except win32gui.error as details: # Should only happen when this module is reloaded if details[0] != winerror.ERROR_CLASS_ALREADY_EXISTS: raise message_map = { win32con.WM_DESTROY: self.OnDestroy, win32con.WM_COMMAND: self.OnCommand, win32con.WM_NOTIFY: self.OnNotify, win32con.WM_CONTEXTMENU: self.OnContextMenu, win32con.WM_SIZE: self.OnSize, } self.hwnd = win32gui.CreateWindow( wclass_name, "", style, \ rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1], self.hwnd_parent, 0, win32gui.dllhandle, None) win32gui.SetWindowLong(self.hwnd, win32con.GWL_WNDPROC, message_map) print("View 's hwnd is", self.hwnd) return self.hwnd
def CreateViewWindow(self, prev, settings, browser, rect): print("ScintillaShellView.CreateViewWindow", prev, settings, browser, rect) # Make sure scintilla.dll is loaded. If not, find it on sys.path # (which it generally is for Pythonwin) try: win32api.GetModuleHandle("Scintilla.dll") except win32api.error: for p in sys.path: fname = os.path.join(p, "Scintilla.dll") if not os.path.isfile(fname): fname = os.path.join(p, "Build", "Scintilla.dll") if os.path.isfile(fname): win32api.LoadLibrary(fname) break else: raise RuntimeError("Can't find scintilla!") style = win32con.WS_CHILD | win32con.WS_VSCROLL | \ win32con.WS_HSCROLL | win32con.WS_CLIPCHILDREN | \ win32con.WS_VISIBLE self.hwnd = win32gui.CreateWindow("Scintilla", "Scintilla", style, rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1], self.hwnd_parent, 1000, 0, None) message_map = { win32con.WM_SIZE: self.OnSize, } # win32gui.SetWindowLong(self.hwnd, win32con.GWL_WNDPROC, message_map) file_data = file(self.filename, "U").read() self._SetupLexer() self._SendSci(scintillacon.SCI_ADDTEXT, len(file_data), file_data) if self.lineno != None: self._SendSci(scintillacon.SCI_GOTOLINE, self.lineno) print("Scintilla's hwnd is", self.hwnd)
def __init__(self): msg_TaskbarRestart = win32gui.RegisterWindowMessage("TaskbarCreated"); message_map = { msg_TaskbarRestart: self.OnRestart, win32con.WM_DESTROY: self.OnDestroy, win32con.WM_COMMAND: self.OnCommand, win32con.WM_USER+20 : self.OnTaskbarNotify, } # Register the Window class. wc = win32gui.WNDCLASS() hinst = wc.hInstance = win32api.GetModuleHandle(None) wc.lpszClassName = "PythonTaskbarDemo" wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW; wc.hCursor = win32api.LoadCursor( 0, win32con.IDC_ARROW ) wc.hbrBackground = win32con.COLOR_WINDOW wc.lpfnWndProc = message_map # could also specify a wndproc. # Don't blow up if class already registered to make testing easier try: classAtom = win32gui.RegisterClass(wc) except win32gui.error as err_info: if err_info.winerror!=winerror.ERROR_CLASS_ALREADY_EXISTS: raise # Create the Window. style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU self.hwnd = win32gui.CreateWindow( wc.lpszClassName, "Taskbar Demo", style, \ 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \ 0, 0, hinst, None) win32gui.UpdateWindow(self.hwnd) self._DoCreateIcons()
def _DoCreateIcons(self): # Try and find a custom icon hinst = win32api.GetModuleHandle(None) iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in DLLs dir, a-la py 2.5 iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "DLLs", "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in the source tree. iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "..\\PC\\pyc.ico" )) if os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print("Can't find a Python icon file - using default") hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "Python Demo") try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32gui.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print("Failed to add the taskbar icon - is explorer running?") # but keep running anyway - when explorer starts, we get the # TaskbarCreated message.
def _RegisterWndClass(self): className = "PythonDocSearch" message_map = {} wc = win32gui.WNDCLASS() wc.SetDialogProc() # Make it a dialog class. wc.hInstance = self.hinst wc.lpszClassName = className wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW ) wc.hbrBackground = win32con.COLOR_WINDOW + 1 wc.lpfnWndProc = message_map # could also specify a wndproc. # C code: wc.cbWndExtra = DLGWINDOWEXTRA + sizeof(HBRUSH) + (sizeof(COLORREF)); wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi") icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE ## py.ico went away in python 2.5, load from executable instead this_app=win32api.GetModuleHandle(None) try: wc.hIcon=win32gui.LoadIcon(this_app, 1) ## python.exe and pythonw.exe except win32gui.error: wc.hIcon=win32gui.LoadIcon(this_app, 135) ## pythonwin's icon try: classAtom = win32gui.RegisterClass(wc) except win32gui.error as err_info: if err_info.winerror!=winerror.ERROR_CLASS_ALREADY_EXISTS: raise return className
def __init__(self): self.myobj = win_gui() self.conf_file_dir = '' self.dst = '' self.time_start = 0 self.time_current = 0 self.loop_time = 0 self.wait_time = 0 self.timeout = -1 self.list_results_dir = [] self.list_newest_dir = [] self.report = '' self.src = '' self.list_dst_dir = [] self.old_file = '' self.conf_file = '' self.new_file = '' #----------------------------------------------------------------------------- # Name: GetErrorInfo -get error information # ruturn: return string.the string is error message. if no error happen ,it is "no error". # Author: <gongke> # # Created: 2013/05/20 # RCS-ID: $Id: rw_Excel_FLOW.py $ #-----------------------------------------------------------------------------
def open_waveQoE(self): #open waveQoE,wait for 3 seconds try: win32api.ShellExecute(0,'open',WAVEQOE_EXE_PATH,'','',1) print "open waveQoE" time.sleep(3) except: print 'open waveQoE error' log_public(ERR_NO_0005) self.m_ERROR_MSG = ERR_NO_0005 return False #find handle for the waveQoE window hwnd2 = win32gui.FindWindow(WAVEQOE_CLASS,'IxVeriwave WaveQoE Main Page') print 'hwnd2',hwnd2 #move window of 'IxVeriwave WaveQoE Main Page' to top left corner win32gui.MoveWindow(hwnd2,0,0,626,270,1) time.sleep(0.5) #click button -- 'wired and wireless testing' self.myobj.Mouse_LB_D(str_app = WAVEQOE_CLASS,lb_dx = '238',lb_dy = '165',Flag = '1') time.sleep(0.5) #click button -- 'wired only testing' #self.myobj.Mouse_LB_D(str_app='QWidget',lb_dx='426',lb_dy='166',Flag='1') #click button -- 'apply' self.myobj.Mouse_LB_D(str_app = WAVEQOE_CLASS,lb_dx = '305',lb_dy = '240',Flag = '1') return True #----------------------------------------------------------------------------- # Name: choose_conf_file # purpose: choose config file which has saved config infomation for test. # explain: # Author: gongke # # Created: 2013/05/20 #-----------------------------------------------------------------------------
def dumpWindow(hwnd): '''Dump all controls from a window into a nested list Useful during development, allowing to you discover the structure of the contents of a window, showing the text and class of all contained controls. Arguments: The window handle of the top level window to dump. Returns A nested list of controls. Each entry consists of the control's hwnd, its text, its class, and its sub-controls, if any. Usage example: replaceDialog = findTopWindow(wantedText='Replace') pprint.pprint(dumpWindow(replaceDialog)) ''' windows = [] try: win32gui.EnumChildWindows(hwnd, _windowEnumerationHandler, windows) except win32gui.error: # No child windows return windows = [list(window) for window in windows] for window in windows: childHwnd, windowText, windowClass = window window_content = dumpWindow(childHwnd) if window_content: window.append(window_content) return windows
def dumpWindow_pos(hwnd): '''Dump all controls from a window into a nested list Useful during development, allowing to you discover the structure of the contents of a window, showing the text and class of all contained controls. Arguments: The window handle of the top level window to dump. Returns A nested list of controls. Each entry consists of the control's hwnd, its text, its class, and its sub-controls, if any. Usage example: replaceDialog = findTopWindow(wantedText='Replace') pprint.pprint(dumpWindow(replaceDialog)) ''' windows = [] try: win32gui.EnumChildWindows(hwnd, _windowEnumerationHandler, windows) except win32gui.error: # No child windows return windows = [list(window) for window in windows] for window in windows: childHwnd, windowText, windowClass = window window_content = dumpWindow(childHwnd) if window_content: window.append(window_content) print '###################' print childHwnd,'pos:',win32gui.GetWindowRect(childHwnd),'window_content:',window_content tuple_t = win32gui.GetWindowRect(childHwnd) if tuple_t[0]==179 and tuple_t[2]==561: print window_content[0][0],'pos:',win32gui.GetWindowRect(window_content[0][0]) if window_content[0][0]: bufLen=1024 buf =win32gui.PyMakeBuffer(bufLen) n = win32gui.SendMessage(window_content[0][0],win32con.WM_GETTEXT,bufLen,buf) str = buf[:n] print str print getEditText(window_content[0][0]) time.sleep(1) #win32gui.SendMessage(window_content[0][0],win32con.WM_SETTEXT,None,'Realtek 10/100/1000 Ethernet NIC') print '###################' return windows
def open_waveApps(self): #open waveApps,wait for 3 seconds try: win32api.ShellExecute(0,'open',WAVEApps_EXE_PATH,'','',1) print "open waveApps" time.sleep(3) except: print 'open waveApps error' log_public(ERR_NO_0005) self.m_ERROR_MSG = ERR_NO_0005 return False ''' #find handle for the waveApps window hwnd2 = win32gui.FindWindow(WAVEApps_CLASS,'IxVeriwave WaveApps Main Page') print 'hwnd2',hwnd2 #move window of 'IxVeriwave WaveApps Main Page' to top left corner win32gui.MoveWindow(hwnd2,0,0,626,270,1) time.sleep(0.5) #click button -- 'wired and wireless testing' self.myobj.Mouse_LB_D(str_app = WAVEApps_CLASS,lb_dx = '238',lb_dy = '165',Flag = '1') time.sleep(0.5) #click button -- 'wired only testing' #self.myobj.Mouse_LB_D(str_app='QWidget',lb_dx='426',lb_dy='166',Flag='1') #click button -- 'apply' self.myobj.Mouse_LB_D(str_app = WAVEApps_CLASS,lb_dx = '305',lb_dy = '240',Flag = '1') ''' return True #----------------------------------------------------------------------------- # Name: choose_conf_file # purpose: choose config file which has saved config infomation for test. # explain: # Author: gongke # # Created: 2013/05/20 #-----------------------------------------------------------------------------
def findControls(topHwnd, wantedText=None, wantedClass=None, selectionFunction=None): '''Find controls. You can identify controls using captions, classes, a custom selection function, or any combination of these. (Multiple selection criteria are ANDed. If this isn't what's wanted, use a selection function.) Arguments: topHwnd The window handle of the top level window in which the required controls reside. wantedText Text which the required controls' captions must contain. wantedClass Class to which the required controls must belong. selectionFunction Control selection function. Reference to a function should be passed here. The function should take hwnd as an argument, and should return True when passed the hwnd of a desired control. Returns: The window handles of the controls matching the supplied selection criteria. Usage example: optDialog = findTopWindow(wantedText="Options") def findButtons(hwnd, windowText, windowClass): return windowClass == "Button" buttons = findControl(optDialog, wantedText="Button") ''' def searchChildWindows(currentHwnd): results = [] childWindows = [] try: win32gui.EnumChildWindows(currentHwnd, _windowEnumerationHandler, childWindows) except win32gui.error: # This seems to mean that the control *cannot* have child windows, # i.e. not a container. return for childHwnd, windowText, windowClass in childWindows: descendentMatchingHwnds = searchChildWindows(childHwnd) if descendentMatchingHwnds: results += descendentMatchingHwnds if wantedText and \ not _normaliseText(wantedText) in _normaliseText(windowText): continue if wantedClass and \ not windowClass == wantedClass: continue if selectionFunction and \ not selectionFunction(childHwnd): continue results.append(childHwnd) return results return searchChildWindows(topHwnd)
def close_waveQoE(self): #get the handle of waveQoE window. try: hwnd6 = win32gui.FindWindow(WAVEQOE_CLASS,None) print 'hwnd6:',hwnd6 time.sleep(1) #set the waveQoE window to the top. win32gui.SetForegroundWindow(hwnd6) time.sleep(1) except: print 'close error' log_public(ERR_NO_0009) self.m_ERROR_MSG = ERR_NO_0009 return False #click the title bar. self.myobj.Mouse_LB_D(str_app = WAVEQOE_CLASS,lb_dx = '75',lb_dy = '10',Flag = '1') #send Alt+F to open 'File' in menu bar. win32api.Sleep(1000) win32api.keybd_event(18,0,0,0); #18Alt? win32api.keybd_event(70,0,0,0); #70F? win32api.Sleep(1000) win32api.keybd_event(70,0,win32con.KEYEVENTF_KEYUP,0); win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) #send X to close waveQoE window. win32api.keybd_event(88,0,0,0); #88X? win32api.Sleep(1000) win32api.keybd_event(88,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) if self.timeout == 1: #send Alt+Y to exit waveQoE without save. win32api.keybd_event(18,0,0,0); #18Alt? win32api.keybd_event(89,0,0,0); #89Y? win32api.Sleep(1000) win32api.keybd_event(89,0,win32con.KEYEVENTF_KEYUP,0); win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) else: #send Alt+N to exit waveQoE without save. win32api.keybd_event(18,0,0,0); #18Alt? win32api.keybd_event(78,0,0,0); #78N? win32api.Sleep(1000) win32api.keybd_event(78,0,win32con.KEYEVENTF_KEYUP,0); win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) return True
def close_waveApps(self): #get the handle of waveApps window. try: hwnd6 = win32gui.FindWindow(WAVEApps_CLASS,None) print 'hwnd6:',hwnd6 time.sleep(1) #set the waveApps window to the top. win32gui.SetForegroundWindow(hwnd6) time.sleep(1) except: print 'close error' log_public(ERR_NO_0009) self.m_ERROR_MSG = ERR_NO_0009 return False #click the title bar. #self.myobj.Mouse_LB_D(str_app = WAVEApps_CLASS,lb_dx = '75',lb_dy = '10',Flag = '1') #send Alt+F to open 'File' in menu bar. win32api.Sleep(1000) win32api.keybd_event(18,0,0,0); #18Alt? win32api.keybd_event(70,0,0,0); #70F? win32api.Sleep(1000) win32api.keybd_event(70,0,win32con.KEYEVENTF_KEYUP,0); win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) #send X to close waveApps window. win32api.keybd_event(88,0,0,0); #88X? win32api.Sleep(1000) win32api.keybd_event(88,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) if self.timeout == 1: #send Alt+Y to exit waveApps without save. win32api.keybd_event(18,0,0,0); #18Alt? win32api.keybd_event(89,0,0,0); #89Y? win32api.Sleep(1000) win32api.keybd_event(89,0,win32con.KEYEVENTF_KEYUP,0); win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) else: #send Alt+N to exit waveApps without save. win32api.keybd_event(18,0,0,0); #18Alt? win32api.keybd_event(78,0,0,0); #78N? win32api.Sleep(1000) win32api.keybd_event(78,0,win32con.KEYEVENTF_KEYUP,0); win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0); win32api.Sleep(1000) return True