初探pywin32 – changqing1234的专栏 – CSDN博客

手头有一批eps文件需要一个一个的打开,查看,关闭。正好一直在学python,就百度了一下,发现有第三方库pywin32可以做这件事情。基本上涉及的几个点就是:1.捕获窗口;2.模拟鼠标键盘动作;3.自动获取某路径下文件列表;4.PIL截屏功能;       由于之前没有接触过win32编程,对于windows的API可以说是一头雾水。虽然现在看来只是完成很简单的功能,但却是省了不少力气。美中

来源: 初探pywin32 – changqing1234的专栏 – CSDN博客

 

 

1.如何利用句柄操作windows窗体

首先,获得窗体的句柄  win32api.FindWindows()

第二,获得窗体中控件的id号,spy++

第三,根据控件的ID获得控件的句柄(hwnd)  GetDlgItem(hwnd,loginID)

最后,利用控件句柄进行操作

python可以通过win32api轻松获取控件的属性值

通过标签找到主窗口句柄,然后通过主句柄获取下属控件句柄

#-*- coding: utf-8 -*-  ##设置编码方式

import win32api,win32gui,win32con

label = ‘tt’ #此处假设主窗口名为tt

hld = win32gui.FindWindow(None, label)

if hld > 0:

dlg = win32api.FindWindowEx(hld, None, ‘Edit’, None)#获取hld下第一个为edit控件的句柄

buffer = ‘0’ *50

len = win32gui.SendMessage(dlg, win32con.WM_GETTEXTLENGTH)+1 #获取edit控件文本长度

win32gui.SendMessage(dlg, win32con.WM_GETTEXT, len, buffer) #读取文本

print buffer[:len-1]

#虚拟鼠标点击按钮(或者回车)

btnhld = win32api.FindWindowEx(hld, None,’Button’, None)

# win32gui.PostMessage(btnhld, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)

# win32gui.PostMessage(btnhld, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

win32gui.PostMessage(btnhld, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0)

win32gui.PostMessage(btnhld, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0)

#获取显示器屏幕大小

width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)

height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)

#点击窗口button
w=win32ui.FindWindow(clsname,windowtitle)
b=w.GetDlgItem(窗口id)
b.postMessage(win32con.BM_CLICK)

#关闭窗体
import win32ui
import win32con
wnd=win32ui.FindWindow(classname,None)
wnd.SendMessage(win32con.WM_CLOSE)  成功!

import win32ui
w=win32ui.FindWindow(classname,窗体title)
print w.GetDlgItemText(0xFFFF)  # 获得弹窗里的消息文字

最小化窗体
w=win32gui.FindWindow()
win32gui.CloseWindow(w)

microsoft.spy

spylite24

2.4更好用

发表评论

邮箱地址不会被公开。 必填项已用*标注