【发布时间】:2014-11-05 04:17:28
【问题描述】:
我正在尝试弄清楚如何使用 Python管理 进程,尽管 C++ 可能会更好。我正在使用 Python 2.7 而 Ubuntu 14.04 是我的操作系统。
恢复我正在努力实现的目标:
- 向正在运行的进程发送动作(不是信号)//与进程的 UI 交互
- 读取内存地址值
我的目的是创建一个脚本来管理其他软件,类似于 Selenium 对浏览器所做的事情,但适用于任何程序。也许使用子进程使用 Python 执行进程会给我管理进程 UI 的选项
发送操作/与正在运行的进程交互
现在我正在使用psutil 在Linux 中制作这个脚本。我知道有一些 Windows 库,例如 pywin 或 pywindll。
我想管理一个进程,例如任何带有 UI 的软件(Skype、Gedit、Firefox ..),我想知道是否可以发送一个动作来点击一个按钮。
我不想管理计算机中的鼠标,因为假设这个窗口“隐藏”在其他窗口/东西下:
- 一旦我的脚本中有发送点击到 UI 按钮的流程,是否有可能? (或写入某个文本框)
我正在使用psutil 来获取流程,并且我有很多选择,例如:
- 获取内存映射
- 获取进程的线程
- 杀死进程
- CPU 使用率
- 等
但这些操作似乎都不是我想要的,即与流程 UI 交互...
我想要达到的目标有可能吗?
发送击键和鼠标点击是最简单的解决方案吗?
读取内存地址值
我一直在 Linux 中使用scanmem 来查找某个变量的内存地址,一旦我找到了我正在寻找的内存地址,我想在 Python 中使用该地址来获取存储的值在那个地址。
我发现最接近的方法是使用ctypes,类似于:
from ctypes import string_at
from sys import getsizeof
mem_address = 0x7c3f
value = string_at(id(mem_address), getsizeof(mem_address))
- 这是在 Python 中访问内存地址的最简单方法吗?
- 是否可以实时修改/更新此号码?
- 如何用 IU 识别内存地址?
我在想一个程序在执行时必须将程序的 UI 发送到操作系统,是否可以“捕获” python 接口,并重定向到操作系统?
类似于执行软件的东西通过 Python,所以可以直接管理 UI
【问题讨论】:
-
@AntonSavin 非常感谢你提供这个链接,听起来很有趣!!
-
@AntonSavin 哇,从那个谷歌搜索的顶部结果中,我被引导到了autopy 0_o 我怎么会错过这个! +1
标签: python python-2.7 process automation ui-automation