python 模擬滑鼠點選自動下載檔案然後輸出檔名
阿新 • • 發佈:2019-01-27
import os import time import socket import mailto,subprocess downloadDir = "I:\\Gamedownloader\\" exeDir= "j:\\POPO\\" def download(xunleiPath): exePath= exeDir exePath = exePath + xunleiPath print exePath subprocess.Popen(exePath) def click(): import win32gui,win32api,win32con win = win32gui.FindWindow('XLUEFrameHostWnd',None) print win (left,top,right,bottom) = win32gui.GetWindowRect(win) print left win32api.SetCursorPos((left+(right-left)-55,top+(bottom-top)-25)) #游標定位 # 滑鼠點選 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0) time.sleep(0.05) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0) def downloadExe(): I=os.listdir(exeDir) #os.path.isfile和os.path.isdir區分是檔案還是目錄 for i in I: if 'tx3'==i[:3] and '_setup.exe'==i[7:]: xunleiPath = i return xunleiPath def fileName(): I=os.listdir(downloadDir) version='' for i in I: version=i[:10] print version print "version:%s" %version def kill(exeName): os.system('taskkill /f /im %s' %exeName) #關閉檢查,exeName是程序名 time.sleep(1) I=os.listdir(downloadDir) for targetFile in I: targetFile=os.path.join(downloadDir,targetFile) print targetFile print os.path.isfile(targetFile) #這裡需要注意,<span style="font-family: Arial, Helvetica, sans-serif;">targetFile一定要是整個路徑加檔名,isfile()才起作用,不然的話,會造成它無論是isfile還是isdir都是返回false</span> print targetFile.find('tx-') print targetFile[18:21] if os.path.isfile(targetFile) and targetFile[18:21]=='tx-': os.remove(targetFile) if __name__ == "__main__": xunleiPath=downloadExe() download(xunleiPath) time.sleep(10) click() fileName() kill(xunleiPath)
如果出現ImportError: No module named win32api ,那是因為Python是沒有自帶訪問windows系統API的庫的,需要下載。庫的名稱叫pywin32,可以從網上直接下載。
連結地址可以下載:
http://sourceforge.net/projects/pywin32/files%2Fpywin32/ 注意看他的文件,下載相應檔案。注意,一定要匹配你的python的32位或者64位。
獲取應用程式視窗控制代碼,可以用spy++.exe,這個程式就整合在vs2010或者2012等。具體怎麼操作,可以百度經驗找spy++使用方法。這裡我只能找到主視窗的控制代碼,但是找不到窗口裡面某個button的控制代碼,後續需要在研究。
win = win32gui.FindWindow('XLUEFrameHostWnd',None)
FindWindow()第一個引數是視窗類名,第二個是視窗標題,兩個填一個或者兩個都行,程式會返回視窗控制代碼。更詳細的資訊,可以搜尋。
subprocess.Popen(exePath)
啟動程式的方法
os.system('taskkill /f /im %s' %exeName) #關閉檢查,exeName是程序名
os.path.isfile(targetFile) #這裡需要注意,<span style="font-family: Arial, Helvetica, sans-serif;">targetFile一定要是整個路徑加檔名,isfile()才起作用,不然的話,會造成它無論是isfile還是isdir都是返回false</span>