在Python中监控用户“行为”的好方法?

时间:2011-04-07 06:58:48

标签: python system window-managers

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

什么是相关的:

  • 松鼠,老鼠事件[PyKeylogger?]#我知道这已经在SO中辩论了
  • 了解有关正在运行的进程的信息
  • 更难,知道有关焦点的窗口的信息(它的名字?)#会非常有趣
  • 更难,我可以向系统询问更多信息吗? (例如,我可以查询此窗口中特定图形元素中显示的文本吗?说它是浏览器,我可以获取当前网址吗?)

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

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

我很抱歉这个问题模糊不清,但我确实在尝试评估我可以在某些API下轻松获取信息的程度,并了解哪些工具是“常用的”这种工作。

感谢您提供的所有信息。

1 个答案:

答案 0 :(得分:3)

问题不是那么模糊,而是相当宽泛。您正在寻找的大多数信息(正如您所表明的那样)分散在SO上的各种问题上。

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

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

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

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

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

    例如,图腾有a D-Bus service基本上暴露了the main Totem object,您可以使用它来监控正在播放的内容等。Geany,我使用的文本编辑器(或轻量级IDE),有一个您可以使用feature complete D-Bus plugin来查询当前活动的标签等。

    Firefox在这方面有点奇怪。多年来,为了揭露D-Bus服务已经做出了各种努力,但由于某些原因,这些努力似乎从来没有出现过。最好的办法是查看MozRepl哪些“允许您从内部编写Firefox和其他基于Mozilla的应用程序”(它通过telnet公开交互式shell)。

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

    您也可以(ab)使用辅助技术支持(对于屏幕阅读器等)。见this answer。我自己也没有这方面的经验。

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