让你的程序使用gui

时间:2009-07-05 17:52:25

标签: python user-interface remote-control

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

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

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

  • 截取屏幕截图,然后我会比较它们以使程序“理解”,但它需要“看到”
  • 使用鼠标:移动,点击和释放,这很简单,不是吗?
  • 使用键盘:按某些键或组合键,包括 Alt Ctrl 等特殊键......

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

5 个答案:

答案 0 :(得分:2)

您可以在Windows下使用WATSUP

答案 1 :(得分:2)

我在使用PyWinAuto时遇到了类似的任务。

  

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

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

答案 2 :(得分:2)

AutoIt完全能够完成您提到的所有事情。当我想要进行一些自动化但使用Python的功能时,我发现最简单的方法是使用AutoItX这是一个DLL / COM控件。

取自我的this answer

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

如果您尝试在GUI级别对整个系统进行任何类型的自动化测试,则必须阅读描述自动响应性测试的this excellent USENIX paper