月下孤井 发表于 2022-10-12 07:28:46

python如何读取窗口内容

python如何调用windows api函数(比如GetDlgItemTextA)读取某一个windows窗口的文本内容呢

qq1151985918 发表于 2022-10-12 08:57:28

获取窗口标题可以做到,获取整个窗口的文本内容好像不行吧?

月下孤井 发表于 2022-10-12 10:08:10

qq1151985918 发表于 2022-10-12 08:57
获取窗口标题可以做到,获取整个窗口的文本内容好像不行吧?

那比如说只获得登录窗口的用户名内容呢

人造人 发表于 2022-10-12 12:40:16

感觉和这个需求差不多?
不过这个是用C写的
https://fishc.com.cn/forum.php?mod=viewthread&tid=205306

wp231957 发表于 2022-10-12 14:58:08

不知道你想要操作哪个窗口
我的测试案例是记事本   
import win32gui,win32con

phd=win32gui.FindWindow("Notepad","*无标题 - 记事本")
pedit=win32gui.FindWindowEx(phd,0,"Edit",None)
len = win32gui.SendMessage(pedit, win32con.WM_GETTEXTLENGTH) +1 #获取edit控件文本长度
buffer = win32gui.PyMakeBuffer(len)
win32gui.SendMessage(pedit, win32con.WM_GETTEXT, len, buffer) #读取文本
address, length = win32gui.PyGetBufferAddressAndLen(buffer[:-1])
text = win32gui.PyGetString(address, length)
print(text)
win32gui.SendMessage(pedit, win32con.WM_SETTEXT, None, "看看能不能设置文本呢") #?

crusher101 发表于 2022-10-12 18:14:13

666

月下孤井 发表于 2022-10-13 03:08:45

wp231957 发表于 2022-10-12 14:58
不知道你想要操作哪个窗口
我的测试案例是记事本

为啥我输出的pedit是0呢

wp231957 发表于 2022-10-13 06:47:54

月下孤井 发表于 2022-10-13 03:08
为啥我输出的pedit是0呢

你看一下记事本的标题,空的记事本没有前面的星号,但是你要是在里面输入东西了,又不保存
会有个星号,其实这个标题不输也可以,但是要是有多个记事本同时被打开,就无法精准定位

月下孤井 发表于 2022-10-14 07:37:23

wp231957 发表于 2022-10-13 06:47
你看一下记事本的标题,空的记事本没有前面的星号,但是你要是在里面输入东西了,又不保存
会有个星号, ...

phd是有值的, 只是定位不到pedit

wp231957 发表于 2022-10-14 07:56:59

月下孤井 发表于 2022-10-14 07:37
phd是有值的, 只是定位不到pedit

你是啥操作系统,有没有查一下记事本的编辑框的类名

月下孤井 发表于 2022-10-14 10:41:01

wp231957 发表于 2022-10-14 07:56
你是啥操作系统,有没有查一下记事本的编辑框的类名

是win11的系统,都用spy++查过了
页: [1]
查看完整版本: python如何读取窗口内容