python 模拟鼠标点击自动下载文件然后输出文件名

来源:互联网 发布:linux lnmp 编辑:程序博客网 时间:2024/05/05 11:44
import osimport timeimport socketimport mailto,subprocessdownloadDir = "I:\\Gamedownloader\\"exeDir= "j:\\POPO\\"def download(xunleiPath):exePath= exeDirexePath = exePath + xunleiPathprint exePathsubprocess.Popen(exePath)def click():import win32gui,win32api,win32conwin = win32gui.FindWindow('XLUEFrameHostWnd',None)print win(left,top,right,bottom) = win32gui.GetWindowRect(win)print leftwin32api.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 = ireturn xunleiPathdef fileName():I=os.listdir(downloadDir)version=''for i in I:version=i[:10]print versionprint "version:%s" %versiondef 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 targetFileprint 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>


0 0
原创粉丝点击