初探pywin32
来源:互联网 发布:java目标字符串替换 编辑:程序博客网 时间:2024/05/22 08:06
手头有一批eps文件。但是这批文件和别的同样叫eps的文件编码又有些不一样。用Ghostscript什么的都打不开也处理不了,但是又需要把它变成jpg图片。目前只能用文泰刻绘软件一个一个的打开,查看,关闭,很麻烦。
正好一直在学python,就百度了一下,发现有第三方库pywin32可以做这件事情。基本上涉及的几个点就是:1.捕获窗口;2.模拟鼠标键盘动作;3.自动获取某路径下文件列表;4.PIL截屏功能;
由于之前没有接触过win32编程,对于windows的API可以说是一头雾水。虽然现在看来只是完成很简单的功能,但却是省了不少力气。美中不足的是,截屏得到的图片并非是最终的结果,而是需要再从中提取出矩形框内的图形。这一功能没有用python来做,而是交给了matlab来做,后来了解到可能numpy能做这件事,不过还没有往里面加。 另外,还有一点,没有在循环中加中断。想实现按下任意键程序就可以退出的效果,但查了一下,好像需要再装一个hook库,就没有做。现在的功能勉强可以满足需求。
代码如下。
01
#-*-coding:utf-8-*-
02
import
os
03
import
time
04
import
win32gui
05
import
win32api
06
import
win32con
07
from
PIL
import
ImageGrab
08
09
#os.startfile("D:\\artcut6\\Prog\\Artcut6.exe")
10
#time.sleep(1)
11
12
wdname1
=
u
"文泰刻绘2009[] - [无标题-1]"
13
w1hd
=
win32gui.FindWindow(
0
,wdname1)
14
print
w1hd
15
w2hd
=
win32gui.FindWindowEx(w1hd,
None
,
None
,
None
)
16
print
w2hd
17
18
def
aotohelper_wt(i):
19
#获取窗口焦点
20
win32gui.SetForegroundWindow(w2hd)
21
#快捷键Alt+F
22
win32api.keybd_event(
18
,
0
,
0
,
0
)
# Alt
23
win32api.keybd_event(
70
,
0
,
0
,
0
)
# F
24
win32api.keybd_event(
70
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
#释放按键
25
win32api.keybd_event(
18
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
26
27
#快捷键I
28
win32api.keybd_event(
73
,
0
,
0
,
0
)
# I
29
win32api.keybd_event(
73
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
30
31
time.sleep(
0.2
)
32
wdname3
=
u
"打开"
33
w3hd
=
win32gui.FindWindow(
None
,wdname3)
#”打开“ 窗口句柄
34
#print w3hd
35
time.sleep(
0.2
)
36
37
#win32gui.MoveWindow(w3hd, 50, 50, 300, 200, True)
38
msg
=
i
39
edithd
=
win32gui.FindWindowEx(w3hd,
None
,
"Edit"
,
None
)
40
win32api.SendMessage(edithd,win32con.WM_SETTEXT,
None
,msg)
41
time.sleep(
0.3
)
42
#btnhd=win32gui.FindWindowEx(w3hd,None,"BUTTON",None)
43
#print btnhd
44
#模拟快捷键Alt+O
45
win32api.keybd_event(
18
,
0
,
0
,
0
)
# Alt
46
win32api.keybd_event(
79
,
0
,
0
,
0
)
# O
47
win32api.keybd_event(
79
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
#释放按键
48
win32api.keybd_event(
18
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
49
time.sleep(
0.1
)
50
#模拟鼠标操作
51
win32api.SetCursorPos([
30
,
150
])
#为鼠标焦点设定一个位置
52
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,
0
,
0
,
0
,
0
)
53
win32api.SetCursorPos([
500
,
700
])
54
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,
0
,
0
,
0
,
0
)
55
time.sleep(
0.2
)
56
#模拟快捷键F7(极限观察)
57
win32api.keybd_event(
118
,
0
,
0
,
0
)
# F7
58
win32api.keybd_event(
118
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
#释放按键
59
time.sleep(
0.3
)
60
#利用PIL截屏
61
path
=
"C:\\Users\\LY\\Desktop\\pic\\"
62
a,b
=
os.path.splitext(i)
#分解文件名和属性
63
filename
=
a
+
'.jpg'
64
im
=
ImageGrab.grab()
65
im.save(path
+
filename)
66
67
#模拟快捷键F8(回到原页面大小)
68
win32api.keybd_event(
119
,
0
,
0
,
0
)
# F8
69
win32api.keybd_event(
119
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
#释放按键
70
71
#模拟键盘事件delete
72
win32api.keybd_event(
46
,
0
,
0
,
0
)
# Delete
73
win32api.keybd_event(
46
,
0
,win32con.KEYEVENTF_KEYUP,
0
)
#释放按键
74
time.sleep(
0.5
)
75
76
time.sleep(
1
)
77
filelist
=
os.listdir(
'C:\\Users\\LY\\Desktop\\eps\\'
)
78
for
i
in
filelist:
79
aotohelper_wt(i)
80
print
i
81
print
"work done!"
0 0
- 初探pywin32
- pywin32
- pywin32
- pywin32下载
- python-pywin32
- python+pywin32修改环境变量
- python -- pywin32安装
- pywin32不能安装解决方案
- pywin32中安装问题
- pywin32模块安装方法
- 安装pywin32报错
- 安装Pywin32出现错误
- pywin32的安装
- python安装pywin32问题
- pywin32使用win32com出现SyntaxError
- python 2.4 pywin32 下载地址:
- pywin32 各版本下载
- python3.5 安装 pywin32模块
- MySql 和 SQL Server 语法和关键字的区别
- 在VMware虚拟机上安装Ubuntu
- windows 上搜索工具
- Cocos2d-x飞机大战教程笔记
- ubuntu9.10自动挂载U盘
- 初探pywin32
- 热液据附加费但仍有很多套近乎热火队
- editplus正则匹配查找替换
- C#将数据转换为指定类型,支持对可空类型(Nullable类)转换方法示例
- IT和烹饪,哪个更难?(1)
- 基于COM和.Net视图状态的Asp.net
- 自动升级出错:80072efe解决
- 第7周作业1——背包问题
- JS获取CSS属性值:getComputedStyle()