初探pywin32

本文介绍了一种使用Python和第三方库pywin32自动化处理特定类型文件的方法,包括捕获窗口、模拟鼠标键盘动作、获取文件列表及截图功能。作者通过此方法实现了批量打开、查看并截图的功能,有效提高了工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        有一批文件,只有专业的软件才能打开它。这种文件很多,需要一个一个的打开,查看,关闭。正好一直在学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!"

    

        



转载于:https://my.oschina.net/24254134/blog/225463

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值