def win32Up(self, file): dialog = win32gui.FindWindow('#32770', u'打开') ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, file) # 往输入框输入绝对地址 time.sleep(5) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button time.sleep(5)
def find_idxSubHandle(pHandle, winClass, index=0): """ 已知子窗口的窗体类名 寻找第index号个同类型的兄弟窗口 """ assert type(index) == int and index >= 0 handle = win32gui.FindWindowEx(pHandle, 0, winClass, None) while index > 0: handle = win32gui.FindWindowEx(pHandle, handle, winClass, None) index -= 1 return handle
def __init__(self, fgFilePath=None): self.Mhandle = win32gui.FindWindow(None,'IP出校控制器') # print ("IP 出校器初始化完成,父类句柄为%x"%(self.Mhandle) ) # TButton0_handle = find_subHandle(self.Mhandle, [("TButton",0)]) # TButton1_handle = find_subHandle(self.Mhandle,[("TComboBox",0),("Edit",0)]) self.TEdit_id_handle = find_subHandle(self.Mhandle, [("TEdit",1)])#用户名 self.TEdit_pw_handle = find_subHandle(self.Mhandle, [("TEdit",0)])#密码 self.TStatusBar_handle = find_subHandle(self.Mhandle, [("TStatusBar",0)])#版本信息 self.TButton_lianjie_handle=win32gui.FindWindowEx(self.Mhandle,0,None,"连接") self.TButton_chaxun_handle=win32gui.FindWindowEx(self.Mhandle,0,None,"查询") self.GroupBox_handle= find_subHandle(self.Mhandle, [("TGroupBox",0)])#余额
def find_idxSubHandle(hwnd,handlelist=[]): """ 传入父窗口的句柄,和要查找的标题或者类型(默认为None),寻找父句柄下的所有子孙句柄 """ handle = win32gui.FindWindowEx(hwnd, 0, None, None) while handle>0: pan_xuanze=0 if btlx: if btlx in win32gui.GetWindowText(handle) or btlx in win32gui.GetClassName(handle):pan_xuanze=1 else:pan_xuanze=1 if pan_xuanze:handlelist.append(handle) find_idxSubHandle(handle,handlelist) handle = win32gui.FindWindowEx(hwnd, handle, None, None)
def find_sub_hwnd_in_index(hwnd, win_class, index=0): """ 已知子窗口的窗体类名 寻找第index号个同类型的兄弟窗口 """ assert type(index) == int and index >= 0 sub_hwnd = win32gui.FindWindowEx(hwnd, 0, win_class, None) while index > 0: sub_hwnd = win32gui.FindWindowEx(hwnd, handle, win_class, None) index -= 1 return sub_hwnd
def openDialog(windowname, inputAddress): dialog = win32gui.FindWindow('#32770', windowname) # 对话框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, inputAddress) # 往输入框输入绝对地址 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button
def close_all_dialog(self): hdlg = win32gui.FindWindowEx(0, 0, '#32770', None) while hdlg > 0: hdlg = win32gui.FindWindowEx(0, hdlg, '#32770', None) dlgthread, dlgprocessId = win32process.GetWindowThreadProcessId( hdlg) if win32gui.IsWindowVisible( hdlg ) and dlgprocessId == self.processId and self.threadId == dlgthread: win32gui.PostMessage(hdlg, win32con.WM_CLOSE, 0, 0) return 0
def harvest(count): playing = True # start bluestacks if win32gui.FindWindow(None, 'BlueStacks App Player') == 0: playing = False win32api.ShellExecute(0, 'open', 'F:\BluestacksCN\BluestacksGP.exe', '', '', 1) time.sleep(40) wm = win32gui.FindWindow(None, 'BlueStacks App Player') # 测试关闭 if playing: # 提示 win32api.ShellExecute( 0, 'open', r'D:\resource\bilibili_video\【少女前线手书】这次轮到AR小队来跳舞啦.flv', '', '', 0) time.sleep(130) # start gf if not playing: hwndClick(wm, 470, 200) time.sleep(30) # def func(hwnd, arg): # print(hex(hwnd)) # win32gui.EnumChildWindows(wm, func, arg) app_host_hwnd = win32gui.FindWindowEx(wm, 0, None, 'HOSTWND') sq_hwnd = win32gui.FindWindowEx(app_host_hwnd, 0, None, 'BlueStacks Android PluginAndroid') # login gf if not playing: hwndClick(sq_hwnd, 325, 568) time.sleep(30) hwndClick(sq_hwnd, 325, 568) time.sleep(30) # harvest for i in range(count): hwndClick(sq_hwnd, 380, 390) time.sleep(3) hwndClick(sq_hwnd, 380, 390) time.sleep(3) # confirm hwndClick(sq_hwnd, 16, 360) time.sleep(3) # shut down bluestacks # WM_CLOSE 不行 if not playing: win32gui.SendMessage(wm, win32con.WM_DESTROY)
def Sendfile(self, picpath): # 传入图片路径 dialog = win32gui.FindWindow('#32770', '打开') # 对话框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, picpath) # 往输入框输入绝对地址 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button
def upload_file(file_path): ''' :param file_path:上传文件的路径 :return: ''' dialog = win32gui.FindWindow("#32770", "打开") comboxex32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) combox = win32gui.FindWindowEx(comboxex32, 0, "ComboBox", None) edit = win32gui.FindWindowEx(combox, 0, "Edit", None) button = win32gui.FindWindowEx(dialog, 0, "Button", "打开(&0)") win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
def upload(path): dialog = win32gui.FindWindow(None, '打开') # 对话框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) # 获取文件路径输入框对象的句柄 Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 获取 打开button按钮对象 button = win32gui.FindWindowEx(dialog, 0, 'Button', '打开(&O)') # 输入框输入绝对路径 win32gui.SendMessage(Edit, win32con.WM_SETTEXT, 0, path) # 点击 打开 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
def EXE(): try: while win32gui.FindWindowEx(win32gui.FindWindow('#32770','条件选股'),None,'Static','选股完毕. ') == 0: zs = win32gui.FindWindowEx(win32gui.FindWindow('#32770','条件选股'),None,'Button','执行选股') print(zs) print(type(zs)) win32gui.PostMessage(win32gui.FindWindowEx(win32gui.FindWindow('#32770','条件选股'),None,'Button','执行选股'),win32con.BM_CLICK,0,0) time.sleep(7) print("执行选股") break except Exception as e: ReadEBK.wx_msg(corp_id, secret,agentid,sys._getframe().f_code.co_name+'\t'+str(e))
def enterRoom(): hwnd = win32gui.FindWindow(None, "카카오톡") hwndChild = win32gui.FindWindowEx(hwnd, None, "EVA_ChildWindow", None) hwndEdit01 = win32gui.FindWindowEx(hwndChild, None, "EVA_Window", None) hwndEdit02 = win32gui.FindWindowEx(hwndChild, hwndEdit01, "EVA_Window", None) hwndEdit02_01 = win32gui.FindWindowEx(hwndEdit02, None, "Edit", None) win32api.SendMessage(hwndEdit02_01, win32con.WM_SETTEXT, 0, roomTitle) time.sleep(1) # 안정성 위해 필요 sendReturn(hwndEdit02_01) time.sleep(1)
def upload_file_windows(self, file_path): ''' :param file_path:上传文件的路径,需点击打开上传按钮,弹出windows窗口再调用 chrome 可调用 :return: ''' dialog = win32gui.FindWindow("#32770", u"打开") #窗口左上角文字 comboxex32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) combox = win32gui.FindWindowEx(comboxex32, 0, "ComboBox", None) edit = win32gui.FindWindowEx(combox, 0, "Edit", None) button = win32gui.FindWindowEx(dialog, 0, "Button", "打开(&0)") win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
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 renderWallpaper(): global _handle, _widget, _legacy, _cursorAtDesktop, _wndproc0 sys.excepthook = cef.ExceptHook # 替换python预定义异常处理逻辑,为保证异常发生时能够结束所有进程 cef.Initialize( settings={}, switches={"disable-gpu-compositing": None} # 添加了用于解决高 DPI 问题的参数 ) # 启用 CEF 高 DPI 支持 cef.DpiAware.EnableHighDpiSupport() # 初始化 CEF 浏览器,并设置加载完毕的事件处理代码 broswer = cef.CreateBrowserSync(url="file:///" + os.getcwd() + "/Website/website.html") broswer.SetClientHandler(LoadHandler()) # 获得与 CEF 浏览器有关的窗口句柄 (句柄名在 Spy++ 中查找的) _handle = broswer.GetWindowHandle() _widget = win32gui.FindWindowEx(_handle, 0, "Chrome_WidgetWin_0", None) _legacy = win32gui.FindWindowEx(_widget, 0, "Chrome_RenderWidgetHostHWND", None) # 获得屏幕分辨率 _screenSize[0] = win32api.GetSystemMetrics(win32con.SM_CXSCREEN) _screenSize[1] = win32api.GetSystemMetrics(win32con.SM_CYSCREEN) # 去除浏览器内核边框 win32gui.SetWindowLong( _handle, win32con.GWL_STYLE, win32gui.GetWindowLong(_handle, win32con.GWL_STYLE) & ~(win32con.WS_CAPTION | win32con.WS_BORDER | win32con.WS_THICKFRAME)) # 将网页铺满全屏 win32gui.SetWindowPos(_handle, win32con.HWND_TOP, 0, 0, _screenSize[0], _screenSize[1], win32con.SWP_NOACTIVATE) win32gui.SetParent(_handle, _GetWorkerW()) # 更改 CEF 浏览器的一些行为 _wndproc0 = win32gui.SetWindowLong(_legacy, win32con.GWL_WNDPROC, _InputHandler) mouseDevice = RAWINPUTDEVICE() mouseDevice.usUsagePage = 0x01 mouseDevice.usUsage = 0x02 mouseDevice.dwFlags = 0x100 mouseDevice.hwndTarget = _legacy ctypes.windll.user32.RegisterRawInputDevices(ctypes.byref(mouseDevice), 1, ctypes.sizeof(mouseDevice)) cef.MessageLoop() # 正式启动浏览器 cef.Shutdown() # 浏览器关闭后释放资源
def solvedexplore(filepath): # 有个bug打开后过快就没反应,停2秒先 time.sleep(3) while not win32gui.FindWindow(None, u"打开"): time.sleep(1) # 等到窗口出现 dialog = win32gui.FindWindow(None, u"打开") ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) button = win32gui.FindWindowEx(dialog, 0, None, u"打开(&O)") win32gui.SendMessage(Edit, win32con.WM_SETTEXT, 0, filepath.encode("gbk")) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
def ClickButton(parent, name, sleepTime=2): button = win32gui.FindWindowEx(parent, None, 'Button', name) count = 0 while button == 0: button = win32gui.FindWindowEx(parent, None, 'Button', name) time.sleep(0.1) count += 1 if count == 1000: break win32gui.PostMessage(button, win32con.BM_CLICK, 0, 0) print('click', name) time.sleep(sleepTime)
def OpenFileBrowser(self, filepath): # win32gui dialog = win32gui.FindWindow('#32770', u'打开') # 对话框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄 Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, filepath) # win32gui.SendMessage(Edit,win32con.WM_SETTEXT,None,'F:\sourcecode\unity\product\kidsgame\ProjectOutPut\xiehanzi\hanziyuan\screenshot\shu\cn\480p\1.jpg') # 往输入框输入绝对地址 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button time.sleep(3)
def winUpload(filepos): time.sleep(3) dialog = win32gui.FindWindow(0, u'打开') # 找到windows对话框参数是(className,title) # print dialog ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面3句依次找对象,直到找出输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮 # 跟上面示例的代码是一样的,只是这里传入的参数不同,如果愿意可以写一个上传函数把上传功能封装起来 win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, filepos) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) pass
def open_chatroom(chatroom_name): # # 채팅방 목록 검색하는 Edit (채팅방이 열려있지 않아도 전송 가능하기 위하여) hwndkakao = win32gui.FindWindow(None, "카카오톡") hwndkakao_edit1 = win32gui.FindWindowEx( hwndkakao, None, "EVA_ChildWindow", None) hwndkakao_edit2_1 = win32gui.FindWindowEx( hwndkakao_edit1, None, "EVA_Window", None) hwndkakao_edit2_2 = win32gui.FindWindowEx( hwndkakao_edit1, hwndkakao_edit2_1, "EVA_Window", None) hwndkakao_edit3 = win32gui.FindWindowEx( hwndkakao_edit2_2, None, "Edit", None) # # Edit에 검색 _ 입력되어있는 텍스트가 있어도 덮어쓰기됨 win32api.SendMessage(hwndkakao_edit3, win32con.WM_SETTEXT, 0, chatroom_name) time.sleep(1) # 안정성 위해 필요 SendReturn(hwndkakao_edit3) time.sleep(1)
def files_up(self): """本地文件上传""" time.sleep(1) dialog = win32gui.FindWindow('#32770', '打开') # 一级窗口 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) # 二级窗口 comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) # 三级窗口 edit = win32gui.FindWindowEx(comboBox, 0, 'Edit', None) # 四级窗口 button = win32gui.FindWindowEx(dialog, 0, 'button', None) # 一级窗口 time.sleep(2) # 必须等到,js需要时间反应过来 win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, r'C:\Users\HP\Desktop\test.xlsx') # 发送文件路径 time.sleep(2) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 点击打开按钮 time.sleep(2)
def upload_assist(self, file_path): """ 文件上传 :param file_path: 上传文件的绝对路径 :return: """ file_path = self.get_param_value(file_path) dialog = win32gui.FindWindow('#32770', u'打开') ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) button = win32gui.FindWindowEx(dialog, 0, 'Button', None) win32gui.SendMessage(Edit, win32con.WM_SETTEXT, 0, file_path) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
def winUpLoadFile(self, file_path, title): # 一级顶层窗口,此处title为上传窗口名称,浏览器不一样上传窗口名称不一样 dialog = win32gui.FindWindow("#32770", title) # 二级窗口 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) # 三级窗口 comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, "ComboBox", None) # 四级窗口 edit = win32gui.FindWindowEx(comboBox, 0, 'Edit', None) button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 执行操作 输入文件路径 win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path) # 点击打开上传文件 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
def SendData2Windows(times,name,psw,database): pwin=win32gui.FindWindow(None,'Oracle 登录') if pwin: ppanelone=win32gui.FindWindowEx(pwin, None, 'TPanel', None) ppaneltwo=win32gui.FindWindowEx(pwin, ppanelone, 'TPanel', None) if ppanelone==0 or ppaneltwo==0: print '没有找到对应窗口' return first = win32gui.FindWindowEx(ppanelone, None, 'TEdit', None) ''' len = 100 buffer = win32gui.PyMakeBuffer(len) nchars = win32gui.SendMessage(first, win32con.WM_GETTEXT, len, buffer) print '账号:',buffer ''' if first: #密码 win32gui.SendMessage(first, win32con.WM_SETTEXT, 0,psw) second = win32gui.FindWindowEx(ppanelone, first, 'TEdit', None) ''' print second len = 100 len = 100 buffer = '0' *50 buffer = win32gui.PyMakeBuffer(len) nchars = win32gui.SendMessage(second, win32con.WM_GETTEXT, len, buffer) print '密码:',buffer ''' if second: #帐户 win32gui.SendMessage(second, win32con.WM_SETTEXT, 0,name) third = win32gui.FindWindowEx(ppanelone, None, 'TPanel', None) if third: thirdTComboBox = win32gui.FindWindowEx(third, None, 'TComboBox', None) if thirdTComboBox: thirdEdit = thirdTComboBox = win32gui.FindWindowEx(thirdTComboBox, None, 'Edit', None) if thirdEdit: #数据库 win32gui.SendMessage(thirdEdit, win32con.WM_SETTEXT, 0,database) canclebtn = win32gui.FindWindowEx(ppaneltwo, None, 'TButton', None) if canclebtn: okbtn = win32gui.FindWindowEx(ppaneltwo, canclebtn, 'TButton', None) if okbtn: win32gui.SendMessage(okbtn,win32con.BM_CLICK,0,0) else: times = times-1 time.sleep(1) os.system('cls') print times+1 if times > 0: SendData2Windows(times,name,psw,database) else: print '没有找到PLSQL登录窗口' os.system('pause')
def upload_file(self, path): """上传附件""" self.wait(0.5) dialog = win32gui.FindWindow('#32770', u'打开') # 识别对话框句柄 combo_box_ex32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) combo_box = win32gui.FindWindowEx(combo_box_ex32, 0, 'ComboBox', None) edit = win32gui.FindWindowEx(combo_box, 0, 'Edit', None) # 找到输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 找到按钮Button win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, path) # 往输入框输入绝对地址 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) self.wait(2.5) log.info("upload file: %s" % path)
def upload(window_class, window_caption, file_name): # 获取对话框 window = win32gui.FindWindow(window_class, window_caption) combo_box_ex32 = win32gui.FindWindowEx(window, 0, 'ComboBoxEx32', None) combo_box = win32gui.FindWindowEx(combo_box_ex32, 0, 'ComboBox', None) # 输入框Edit对象的句柄 edit_button = win32gui.FindWindowEx(combo_box, 0, 'Edit', None) # 确定按钮Button commit_button = win32gui.FindWindowEx(window, 0, 'Button', None) # 往输入框输入文件的绝对路径 win32gui.SendMessage(edit_button, win32con.WM_SETTEXT, None, file_name) # 按button win32gui.SendMessage(window, win32con.WM_COMMAND, 1, commit_button)
def upload_file(self, file_path): '''本函数用于文件上传''' #定位一级窗口 dialog = win32gui.FindWindow("#32770", "打开") #定位二级窗口 comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "comboBoxEx32", None) #定位三级窗口 comboBox = win32gui.FindWindowEx(comboBoxEx32, 0, "comboBox", None) #定位四级窗口 edit = win32gui.FindWindowEx(comboBox, 0, "edit", None) button = win32gui.FindWindowEx(dialog, 0, 'Button', None) #文件上传 win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
def OpenRemote(num): # Control SocksCap64 hWnd = findwindw('SocksCap64_WND_Class_150213', None) c_hWnd = findwindwEx(hWnd, 0, 'Static', 'About SocksCap64') # win32gui.PostMessage(c_hWnd, win32con.BM_CLICK) Rect = win32gui.GetWindowRect(c_hWnd) print(Rect) # set front win32gui.ShowWindow(hWnd, win32con.SW_SHOWNA) KeyBoard(win32con.VK_DOWN) win32gui.SetForegroundWindow(hWnd) # Open remote # win32gui.PostMessage(c_hWnd,win32con.BM_CLICK) # KeyBoard(win32con.VK_LEFT) # KeyBoard(win32con.VK_RETURN) Click(Rect[0] + 20, Rect[1] + 20) KeyBoard(13) time.sleep(5) # select ip open and input password # select hWnd = findwindw('#32770', '远程桌面连接') c_hWnd = findwindwEx(hWnd, None, 'Button', '连接(&N)') com_hWnd = win32gui.FindWindowEx(hWnd, 0, 'ComboBoxEx32', None) com2_hWnd = win32gui.FindWindowEx(com_hWnd, 0, 'ComboBox', None) e_hWnd = win32gui.FindWindowEx(com2_hWnd, 0, 'Edit', None) # 设置文本框内容,等窗口处理完毕后返回true。中文需编码成gbk # 参数:句柄;消息类型;参数WParam,无需使用; 参数IParam,要设置的内容,字符串 win32api.SendMessage(e_hWnd, win32con.WM_SETTEXT, 0, str_ip[num]) print('Selected index is ', str_ip[num]) # open win32api.PostMessage(c_hWnd, win32con.BM_CLICK) hwd = findwindw('TscShellContainerClass', str_na[num]) win32gui.ShowWindow(hwd, win32con.SW_SHOWMAXIMIZED) KeyBoard(win32con.VK_DOWN) win32gui.SetForegroundWindow(hwd) # set Xvnc y_xorg = 575 Click(1075, y_xorg) Click(908, y_xorg + 40) # set password Click(905, 627) time.sleep(0.5) KeyStr('chencheng123123') KeyBoard(13) #Enter
def setNewChatroom(self, chatroom_name): if not isinstance(chatroom_name, str): raise TypeError('인자 chatroom_name은 str 객체여야 합니다.') self.chatroom_name = chatroom_name self.hwndMain = wg.FindWindow(None, self.chatroom_name) if not wg.IsWindow(self.hwndMain): self.open_chatroom() self.hwndMain = wg.FindWindow(None, self.chatroom_name) self.hwndEdit = wg.FindWindowEx(self.hwndMain, None, "RICHEDIT50W", None) self.hwndList = wg.FindWindowEx(self.hwndMain, None, "EVA_VH_ListControl_Dblclk", None)