有一批文件,只有专业的软件才能打开它。这种文件很多,需要一个一个的打开,查看,关闭。正好一直在学python,就百度了一下,发现有第三方库pywin32可以做这件事情。基本上涉及的几个点就是:1.捕获窗口;2.模拟鼠标键盘动作;3.自动获取某路径下文件列表;4.PIL截屏功能;
由于之前没有接触过win32编程,对于windows的API可以说是一头雾水。虽然现在看来只是完成很简单的功能,但却是省了不少力气。美中不足的是,截屏得到的图片并非是最终的结果,而是需要再从中提取出矩形框内的图形。这一功能没有用python来做,而是交给了matlab来做,后来了解到可能numpy能做这件事,不过还没有往里面加。
代码如下。
#-*-coding:utf-8-*- import os import time import win32gui import win32api import win32con from PIL import ImageGrab #os.startfile("D:\\artcut6\\Prog\\Artcut6.exe") #time.sleep(1) wdname1=u"文泰刻绘2009[] - [无标题-1]" w1hd=win32gui.FindWindow(0,wdname1) print w1hd w2hd=win32gui.FindWindowEx(w1hd,None,None,None) print w2hd def aotohelper_wt(i): #获取窗口焦点 win32gui.SetForegroundWindow(w2hd) #快捷键Alt+F win32api.keybd_event(18,0,0,0) # Alt win32api.keybd_event(70,0,0,0) # F win32api.keybd_event(70,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) #快捷键I win32api.keybd_event(73,0,0,0) # I win32api.keybd_event(73,0,win32con.KEYEVENTF_KEYUP,0) time.sleep(0.2) wdname3=u"打开" w3hd=win32gui.FindWindow(None,wdname3) #”打开“ 窗口句柄 #print w3hd time.sleep(0.2) #win32gui.MoveWindow(w3hd, 50, 50, 300, 200, True) msg=i edithd=win32gui.FindWindowEx(w3hd,None,"Edit",None) win32api.SendMessage(edithd,win32con.WM_SETTEXT,None,msg) time.sleep(0.3) #btnhd=win32gui.FindWindowEx(w3hd,None,"BUTTON",None) #print btnhd #模拟快捷键Alt+O win32api.keybd_event(18,0,0,0) # Alt win32api.keybd_event(79,0,0,0) # O win32api.keybd_event(79,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) time.sleep(0.1) #模拟鼠标操作 win32api.SetCursorPos([30,150]) #为鼠标焦点设定一个位置 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0) win32api.SetCursorPos([500,700]) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0) time.sleep(0.2) #模拟快捷键F7(极限观察) win32api.keybd_event(118,0,0,0) # F7 win32api.keybd_event(118,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 time.sleep(0.3) #利用PIL截屏 path="C:\\Users\\LY\\Desktop\\pic\\" a,b=os.path.splitext(i) #分解文件名和属性 filename=a+'.jpg' im=ImageGrab.grab() im.save(path+filename) #模拟快捷键F8(回到原页面大小) win32api.keybd_event(119,0,0,0) # F8 win32api.keybd_event(119,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 #模拟键盘事件delete win32api.keybd_event(46,0,0,0) # Delete win32api.keybd_event(46,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 time.sleep(0.5) time.sleep(1) filelist=os.listdir('C:\\Users\\LY\\Desktop\\eps\\') for i in filelist: aotohelper_wt(i) print i print "work done!"