nsaizl 发表于 2023-3-6 09:51:05

求大佬赐一些使用python通过句柄操作win程序的学习资料

公司有很多JAVA的写的客户端老程序,获取对应数据库的数据只能通过客户端导出表的方式,我们没权限直接访问服务器。
现在想用python做一个自动导出的脚本,目前没办法很好的直接抓取到菜单或程序窗口的句柄,后续用哪个库也摸不清。
请问各位大佬们能不能推荐几个这方面的学习教程、好用的句柄抓举工具和第三方库

wp231957 发表于 2023-3-6 09:51:06

nsaizl 发表于 2023-3-6 10:54
如果能够通过句柄来操作,直接定位到软件内部的菜单、按钮、窗口,适用性就会更强一些,程序也就更稳定一 ...

看看这个模块,代码通过本人亲测有效

from pywinauto import Application
app=Application().start("notepad.exe")
app["无标题-记事本"].MenuSelect("帮助->关于记事本")
app['关于"记事本"']["确定"].click()
filename="hello.dat"
app["无标题-记事本"].MenuSelect("文件->另存为...")
app["另存为"]["edit"].TypeKeys(filename)
app["另存为"]["保存"].click()
app.edit.TypeKeys("hello\n",with_newlines=True)
app.edit.TypeKeys("新的一行\n")
app.Notepad.MenuSelect("文件->退出")
app["记事本"]["保存"].click()

wp231957 发表于 2023-3-6 10:06:49

如果屏幕光标位置固定,可以使用pyautogui来操作

大裤衩子 发表于 2023-3-6 10:17:41

试试这个,http://taojy123.github.io/KeymouseGo/   

nsaizl 发表于 2023-3-6 10:39:24

wp231957 发表于 2023-3-6 10:06
如果屏幕光标位置固定,可以使用pyautogui来操作

尝试过,但有的屏幕分辨率不一样。还有的电脑会有广告弹窗……麻烦事很多

nsaizl 发表于 2023-3-6 10:45:04

大裤衩子 发表于 2023-3-6 10:17
试试这个,http://taojy123.github.io/KeymouseGo/

这个和按键精灵类似啊,我想找一个能够根据下拉菜单句柄或者窗口内句柄来定位的东西。这样适用性更强一点。用图片或屏幕坐标定位点击的总感觉不踏实。

wp231957 发表于 2023-3-6 10:47:13

nsaizl 发表于 2023-3-6 10:45
这个和按键精灵类似啊,我想找一个能够根据下拉菜单句柄或者窗口内句柄来定位的东西。这样适用性更强一 ...

你要是把广告弹窗都考虑进去,那几乎就做不了自动化

nsaizl 发表于 2023-3-6 10:54:35

wp231957 发表于 2023-3-6 10:47
你要是把广告弹窗都考虑进去,那几乎就做不了自动化

如果能够通过句柄来操作,直接定位到软件内部的菜单、按钮、窗口,适用性就会更强一些,程序也就更稳定一些。主要是想学习一下坐标和图片定位以外的另一种方法。

阿奇_o 发表于 2023-3-6 13:28:13

nsaizl 发表于 2023-3-6 10:54
如果能够通过句柄来操作,直接定位到软件内部的菜单、按钮、窗口,适用性就会更强一些,程序也就更稳定一 ...

本想推荐ctypes.windll的。。但注意到你说这些是Java客户端。。那如果这客户端没相应快捷键,那么基本只能靠鼠标定位 了。

不过,通过ctypes.windll.user32等API拿到这个客户端的 句柄,切换/激活这个客户端,应该是没问题的。你自己搜搜,研究一下吧。

cflying 发表于 2023-3-6 16:28:15

也可以换个思路,抓包看看客户端和服务器之间咋传输,如果是常见的http的话。嘿嘿。

nsaizl 发表于 2023-3-7 15:10:55

wp231957 发表于 2023-3-6 11:39
看看这个模块,代码通过本人亲测有效

正在尝试,感觉功能还不错,我多写一点试试看

nsaizl 发表于 2023-3-7 15:12:36

阿奇_o 发表于 2023-3-6 13:28
本想推荐ctypes.windll的。。但注意到你说这些是Java客户端。。那如果这客户端没相应快捷键,那么基本只 ...

略微看了下资料……感觉超出我的能力了……有没有这个知识点比较入门的讲解?

nsaizl 发表于 2023-3-7 15:15:54

cflying 发表于 2023-3-6 16:28
也可以换个思路,抓包看看客户端和服务器之间咋传输,如果是常见的http的话。嘿嘿。

………………不会……

wuliangtdi 发表于 2023-3-7 15:47:55

如果会Java或者C#的话,可以试试大漠插件。

wuliangtdi 发表于 2023-3-7 15:54:43

wuliangtdi 发表于 2023-3-7 15:47
如果会Java或者C#的话,可以试试大漠插件。

Python也可以调用大漠插件。
Python调用大漠插件

陶远航 发表于 2023-4-9 17:49:15



如果你想使用Python来自动化你的Java客户端程序,可能需要使用第三方库来实现自动化的功能。以下是一些常用的Python库和工具:

1. Pywinauto:一个用于自动化Windows应用程序的库,可以使用它来自动化你的Java客户端程序并模拟用户的操作。

2. AutoIt:一个用于Windows的免费自动化脚本语言和工具集,可以用它来模拟鼠标和键盘的操作,并对窗口进行控制。

3. SikuliX:一个开源自动化测试工具,可以用它来编写脚本来模拟用户操作。

4. PyAutoGUI:一个跨平台的自动化库,可以用它来模拟鼠标和键盘的操作,并可以捕捉屏幕上的图像以进行图像识别。

5. OpenCV:一个开源计算机视觉库,可以用它来进行图像处理和图像识别。

关于学习资源,这里有一些推荐:

1. Pywinauto官方文档:https://pywinauto.github.io/

2. AutoIt官方文档:https://www.autoitscript.com/autoit3/docs/

3. SikuliX官方文档:http://sikulix.com/docs.html

4. PyAutoGUI官方文档:https://pyautogui.readthedocs.io/en/latest/

5. OpenCV官方文档:https://docs.opencv.org/

希望这些信息对你有所帮助。
页: [1]
查看完整版本: 求大佬赐一些使用python通过句柄操作win程序的学习资料