pywin32 简易入门(转)

停更一年多了,最近对PY产生了兴趣,应为想解放双手,又不想用按键精灵之类的软件,于是乎就百度到了这个东东“pywin32”
打开了新世界的大门,So,就在这记录学习笔记吧。
言归正传

准备部分1
pip install pywin32

准备部分2
工欲善其事必先利其器,先装个Spy++,百度一大把,就不放链接了,具体使用方法参考这里(一段简短的介绍)不过也够用了。

代码部分

首先

import win32gui
import win32con
win = win32gui.FindWindow('Notepad','新建文本文档.txt - 记事本')
tid = win32gui.FindWindowEx(win,None,'Edit',None)
win32gui.SendMessage(tid, win32con.WM_SETTEXT, None, '你好hello word!')
win32gui.PostMessage(tid,win32con.WM_KEYDOWN,win32con.VK_RETURN,0)
print("%x" % tid)
print("%x" % win2)

 

一句一句解释:

win = win32gui.FindWindow('Notepad','新建文本文档.txt - 记事本')

 

这里搬运一下大佬博客的解释,

FindWindow(lpClassName=None, lpWindowName=None)
描述:自顶层窗口(也就是桌面)开始搜索条件匹配的窗体,并返回这个窗体的句柄。
不搜索子窗口、不区分大小写。找不到就返回0 参数:
lpClassName:字符型,是窗体的类名,这个可以在Spy++里找到。
lpWindowName:字符型,是窗口名,也就是标题栏上你能看见的那个标题。 说明:这个函数我们仅能用来找主窗口。


FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None)
描述:搜索类名和窗体名匹配的窗体,并返回这个窗体的句柄。不区分大小写,找不到就返回0。 参数:
hwndParent:若不为0,则搜索句柄为hwndParent窗体的子窗体。
hwndChildAfter:若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索子窗体,否则从第一个子窗体开始搜索。
lpClassName:字符型,是窗体的类名,这个可以在Spy++里找到。
lpWindowName:字符型,是窗口名,也就是标题栏上你能看见的那个标题。 说明:找到了主窗口以后就靠它来定位子窗体啦。

这里我们在桌面新建了一个记事本,

当然直接 用Spy++就可以查询到这个窗口的句柄之类的信息

第一个参数lpClassName类名就是Spy++查询得到的:

第二个参数lpWindowName就是标题栏显示的名字 “新建文本文档.txt - 记事本”

 

然后获取到这个这个窗口的子窗口类名叫“Edit”(同样可以Spy++查到)的编辑区域

tid = win32gui.FindWindowEx(win,None,'Edit',None)

 

调用SendMessage方法往里面写入一段话

win32gui.SendMessage(tid, win32con.WM_SETTEXT, None, '你好hello word!')

 


插入一个回车符

win32gui.PostMessage(tid,win32con.WM_KEYDOWN,win32con.VK_RETURN,0)

 

顺便打印出来这个句柄的ID和在Spy++中查到的验证一下

print("%x" % tid)
print("%x" % win2)

另外,python中找回来的句柄都是十进制整型,Spy++里显示的都是十六进制整型,这个要注意下,调试的时候用十六进制 %x 输出句柄,如下:

 

————————————————
版权声明:本文为CSDN博主「TPMer」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/six_sex/article/details/88069282

posted @ 2019-09-29 07:15  汉学  阅读(2755)  评论(0编辑  收藏  举报