1

我正在寻找简单的 API 来获取有关用户在 Python 中使用他的计算机的信息。

什么是相关的:

  • Keypresses, mouse events [PyKeylogger?] # 我知道这已经在 SO 中讨论过了
  • 了解有关正在运行的进程的信息
  • 更难的是,了解有关具有焦点的窗口的信息(它的名称?)# 这真的很有趣
  • 更难的是,我可以向系统询问更多信息吗?(例如,我可以查询此窗口中特定图形元素中显示的文本吗?假设它是一个浏览器,我可以获得当前的 url 吗?)

我希望答案是关于 Linux 系统的,但如果它更容易,我也对 Windows 替代品感兴趣。我现在不太关心便携性。

我想在 Linux 下有运行 shell 脚本和检索输出的后备,但我想知道这是否是常见的方法,或者某些 API 是否已经很好地包装了这个。

对于这个问题的含糊之处,我很抱歉,但实际上是我试图评估在某些 API 下我可以轻松获得的信息范围,并了解哪些工具对于这类工作是“常用的”。

感谢您提供的所有信息。

4

1 回答 1

3

这个问题不是那么模糊,而是相当广泛。您正在寻找的大多数信息(正如您自己指出的那样)分布在关于 SO 的各种问题上。

我已经针对我正在考虑编写的生产力跟踪应用程序对这个主题进行了一些研究。以下是我可以给你的一些一般性建议:

  • 要监视和查询窗口上的信息(标题、状态等),您需要查看libwnck(请参阅:python-wnck)。请注意,在创建WnckScreen对象时,它不会从 X 服务器获取信息,并且看起来屏幕上没有工作区或窗口(更多信息请参见此处)。

  • 在某些情况下,您可以通过查询其条目来获取有关正在运行的进程的一些有用信息/proc(您可能想查看psutil模块)。但是,您更有可能不会(这取决于您要查找的内容)。

  • 要查询有关应用程序的非常具体的信息,您必须查看该特定应用程序支持的内容。

    Linux 应用程序倾向于使用 D-Bus 服务公开相关的内部功能。

    例如,Totem 有一个 D-Bus 服务,它基本上公开了主要的 Totem 对象,您可以使用它来监控正在播放的内容等。Geany,我使用的一个文本编辑器(或轻量级 IDE),有一个功能齐全的 D-Bus 插件您可以使用查询当前活动的选项卡等。

    Firefox 在这方面有点奇怪。多年来,人们一直在努力公开 D-Bus 服务,但出于某种原因,这些努力似乎从未有过任何进展。最好的办法是查看MozRepl,它“允许您从内部对 Firefox 和其他基于 Mozilla 的应用程序进行编程”(它通过 telnet 公开了一个交互式 shell)。

  • 至于查询个人控件/小部件的通用方法。在 Linux 上,我只知道Parasite。如果您使用过 Firebug,它有点像,但适用于 GTK+ 应用程序。但是,我怀疑它在您的用例场景中会有多大用处。

    您还可以(ab)使用辅助技术支持(用于屏幕阅读器等)。看到这个答案。我自己对此没有任何经验。

如果您有任何疑问,请随时对此答案发表评论。

于 2011-06-18T01:53:32.390 回答