Хорошие способы контролировать "поведение" пользователя в Python? - PullRequest
1 голос
/ 07 апреля 2011

Я ищу простые API для получения информации об использовании пользователем его компьютера в Python.

Что будет иметь отношение:

  • Клавиши, события мыши [PyKeylogger?] # Я знаю, что это уже обсуждалось в SO *
  • Знать информацию о запущенных процессах
  • Сложнее, знать информацию об окне, которое имеет фокус (его имя?) #, Которое будетдействительно интересно
  • Еще сложнее, могу ли я попросить систему еще больше информации?(например, могу ли я запросить текст, отображаемый в определенном графическом элементе в этом окне? скажем, это браузер, могу ли я получить текущий URL?)

Я бы хотел, чтобы ответы были осистема Linux, но меня также интересуют альтернативы Windows, если это проще.На данный момент меня не волнует переносимость.

Я предполагаю, что в Linux есть запасной вариант запуска сценария оболочки и получения выходных данных, но я хочу знать, является ли это общим способ сделать это, или если некоторые API-интерфейсы уже обернули это.

Извините за неопределенность вопроса, но на самом деле я пытаюсь оценить объем информации, которую я могу получить легко для определенных API и узнать, какие инструменты являются «обычными» для такого рода работы.

Спасибо за каждый бит информации, который вы можете принести.

1 Ответ

3 голосов
/ 18 июня 2011

Вопрос не столько расплывчатый, сколько достаточно широкий. Большая часть информации, которую вы ищете, (как вы сами указали) распространяется на различные вопросы по SO.

Я провел некоторое исследование по этому вопросу для приложения для отслеживания производительности, о котором я думал, когда писал. Вот несколько общих советов, которые я могу вам дать:

  • Для мониторинга и запроса информации об окнах (заголовок, состояние и т. Д.) Вам нужно взглянуть на libwnck (см .: python-wnck). Помните, что при его создании объект WnckScreen не будет получать информацию с X-сервера и будет выглядеть так, как будто на экране нет рабочих областей и окон ( подробнее об этом здесь ).

  • В некоторых случаях вы можете получить некоторую полезную информацию о запущенном процессе, запросив его запись в /proc (вы можете посмотреть на модуль psutil ). Тем не менее, более вероятно, что вы не будете (это зависит от того, что вы ищете).

  • Для запроса очень конкретной информации о приложении вам нужно посмотреть, что поддерживает это конкретное приложение.

    В приложениях Linux, как правило, предоставляют соответствующие внутренние функции с помощью службы D-Bus.

    Тотем, например, имеет сервис D-Bus , который, по сути, предоставляет основной объект Тотема , который вы можете использовать для наблюдения за тем, что играет, и т.д .. Geany , текстовый редактор (или облегченная IDE), который я использую, имеет в значительной степени полнофункциональный плагин D-Bus , который можно использовать для запроса активной в данный момент вкладки и т. д.

    Firefox немного странная утка в этом отношении. В течение многих лет предпринимались различные попытки представить службу D-Bus, но по некоторым причинам эти усилия, похоже, никуда не делись. Лучше всего посмотреть на MozRepl , который "позволяет программировать Firefox и другие приложения на основе Mozilla изнутри" (он предоставляет интерактивную оболочку через telnet).

  • Что касается общего подхода к запросу отдельных элементов управления / виджетов. В Linux я знаю только о Паразит . Если вы использовали Firebug, то вроде как, но для приложений GTK +. Однако я сомневаюсь, что он будет очень полезен в вашем сценарии использования.

    Вы также можете (ab) использовать поддержку вспомогательных технологий (для программ чтения с экрана и т. П.). См. этот ответ . У меня нет никакого опыта с этим.

Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии к этому ответу.

...