3

我想编写一个能够通过控制鼠标/键盘并能够“看到”屏幕上的内容来“使用”其他程序的程序。

我用AutoIt做类似的事情,但有时我不得不作弊,因为语言不是那么强大,或者可能只是我很烂,我不能用它做那么多:P

所以......我需要:

  • 截图,然后我对比一下,让程序“懂”,但需要“看”
  • 使用鼠标:移动、单击和释放,很简单,不是吗?
  • 使用键盘:按一些键或组合键,包括特殊键,如AltCtrl...

我怎么能在python中做到这一点?
它适用于linux和windows吗?(这可能真的很酷,但没有必要)

4

5 回答 5

2

您可以在 Windows 下使用WATSUP

于 2009-07-05T19:32:24.427 回答
2

我使用PyWinAuto完成了类似的任务。

pywinauto 是一组用于自动化 Microsoft Windows GUI 的 python 模块。最简单的是,它允许您将鼠标和键盘操作发送到 Windows 对话框和控件。

它还支持使用 Python Imaging Library PIL捕获对话框图像等。

于 2009-07-06T08:14:54.953 回答
2

AutoIt 完全有能力做你提到的一切。当我想做一些自动化但使用 Python 的功能时,我发现使用AutoItX是最简单的,它是一个 DLL/COM 控件。

取自我的这个答案

import win32com.client
oAutoItX = win32com.client.Dispatch( "AutoItX3.Control" )

oAutoItX.Opt("WinTitleMatchMode", 2) #Match text anywhere in a window title

width = oAutoItX.WinGetClientSizeWidth("Firefox")
height = oAutoItX.WinGetClientSizeHeight("Firefox")

print width, height
于 2009-07-07T13:39:50.300 回答
1

如果您对 Pascal 感到满意,一个真正强大的键盘/鼠标/屏幕阅读程序是 SCAR:http://freddy1990.com/index.php ?page=product&name=scar 它可以进行 OCR、位图查找、颜色查找等. 它通常用于自动化在线游戏,但它可以用于任何想要模拟人类阅读屏幕并提供输入的情况。

于 2009-07-06T01:55:26.310 回答
0

过去,我曾使用 Windows(仅限)输入 API编写类似 VNC 的远程控制应用程序。它使您可以在系统级别很好地伪造键盘和鼠标输入(即不仅仅是将事件发布到单个应用程序)。

如果您尝试在 GUI 级别对整个系统进行任何类型的自动化测试,那么这篇描述自动化响应测试的优秀 USENIX 论文是必读的。

于 2009-07-05T20:34:32.040 回答