鱼C论坛

 找回密码
 立即注册
查看: 2362|回复: 15

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

[复制链接]
发表于 2023-3-6 09:51:05 | 显示全部楼层 |阅读模式
50鱼币
公司有很多JAVA的写的客户端老程序,获取对应数据库的数据只能通过客户端导出表的方式,我们没权限直接访问服务器。
现在想用python做一个自动导出的脚本,目前没办法很好的直接抓取到菜单或程序窗口的句柄,后续用哪个库也摸不清。
请问各位大佬们能不能推荐几个这方面的学习教程、好用的句柄抓举工具和第三方库

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 10:06:49 From FishC Mobile | 显示全部楼层
如果屏幕光标位置固定,可以使用pyautogui来操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 10:17:41 | 显示全部楼层
试试这个,http://taojy123.github.io/KeymouseGo/   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 10:39:24 | 显示全部楼层
wp231957 发表于 2023-3-6 10:06
如果屏幕光标位置固定,可以使用pyautogui来操作

尝试过,但有的屏幕分辨率不一样。还有的电脑会有广告弹窗……麻烦事很多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 10:45:04 | 显示全部楼层


这个和按键精灵类似啊,我想找一个能够根据下拉菜单句柄或者窗口内句柄来定位的东西。这样适用性更强一点。用图片或屏幕坐标定位点击的总感觉不踏实。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

你要是把广告弹窗都考虑进去,那几乎就做不了自动化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 10:54:35 | 显示全部楼层
wp231957 发表于 2023-3-6 10:47
你要是把广告弹窗都考虑进去,那几乎就做不了自动化

如果能够通过句柄来操作,直接定位到软件内部的菜单、按钮、窗口,适用性就会更强一些,程序也就更稳定一些。主要是想学习一下坐标和图片定位以外的另一种方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

不过,通过ctypes.windll.user32等API拿到这个客户端的 句柄,切换/激活这个客户端,应该是没问题的。你自己搜搜,研究一下吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 16:28:15 | 显示全部楼层
也可以换个思路,抓包看看客户端和服务器之间咋传输,如果是常见的http的话。嘿嘿。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-7 15:10:55 | 显示全部楼层
wp231957 发表于 2023-3-6 11:39
看看这个模块,代码通过本人亲测有效

正在尝试,感觉功能还不错,我多写一点试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

略微看了下资料……感觉超出我的能力了……有没有这个知识点比较入门的讲解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

………………不会……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-7 15:47:55 | 显示全部楼层
如果会Java或者C#的话,可以试试大漠插件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-7 15:54:43 | 显示全部楼层
wuliangtdi 发表于 2023-3-7 15:47
如果会Java或者C#的话,可以试试大漠插件。

Python也可以调用大漠插件。
Python调用大漠插件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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/

希望这些信息对你有所帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 20:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表