Запуск процесса в Python и получение его идентификатора окна - PullRequest
5 голосов
/ 05 апреля 2011

Допустим, я запускаю:

import subprocess;
P = subprocess.Popen(['gnome-terminal');

Затем я получаю объект P класса Popen:

<subprocess.Popen object at 0xb72a9d0c>

Как я могу затем получить window identityэтого подпроцесса?

В конечном счете, я хотел бы манипулировать геометрическими свойствами окна, порожденного подпроцессом, используя wmctrl , но для этого мне нужно что-то, известное как windows identity окна (см.документация wmctrl )

Чтобы получить больше контекста для вопроса, wmctrl -l выводит список окон, запущенных на рабочем столе GNOME, где в первом столбце отображается window identity каждого окна,Это шестнадцатеричное число, которое, как я заметил, отличается от числа, включенного в вывод, о котором сообщал Попен.

Я проверил документацию Popen , но я неуверен, как исходить из этого положения.

Есть мысли?Спасибо!

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Простой способ получить идентификатор окна - использовать wmctrl -lp, который будет включать PID процессов. Найдите тот, который соответствует Popen.pid вашего подпроцесса, и вы найдете идентификатор окна процесса.

0 голосов
/ 06 июля 2018

Если вы согласны с использованием утилиты внешней оболочки, тогда можно использовать xdotool:

xdotool search --any --pid 1234

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...