Как получить Окно X11 из идентификатора Процесса?

52
задан Adam Pierce 30 September 2008 в 06:40
поделиться

4 ответа

Единственным путем я знаю, чтобы сделать, это должно пересечь дерево окон, пока Вы не находите то, что Вы ищете. Пересечение не трудно (просто видят, какой xwininfo - корень - дерево делает путем рассмотрения xwininfo.c при необходимости в примере).

, Но как Вы определяете окно, которое Вы ищете? [приблизительно 110] приложения устанавливают свойство окна, названное _NET_WM_PID.

я полагаю, что OpenOffice одно из приложений, которое устанавливает то свойство (также, как и большинство приложений Gnome), таким образом, Вы находитесь в удаче.

22
ответ дан andy 7 November 2019 в 19:34
поделиться

Убедитесь, что / proc / PID / Environment содержит переменную с именем WINDOWID

12
ответ дан 7 November 2019 в 09:34
поделиться

Вы уверены, что у Вас есть идентификатор процесса каждого экземпляра? Мой опыт с ООО состоял в том, что попытка выполнить второй экземпляр ООО просто разговаривает с первой инстанцией ООО и говорит что открыть дополнительный файл.

я думаю, что Вы собираетесь должны использовать отправляющие сообщение возможности X для выяснения у него приятно его окно. Я надеялся бы, что ООО документирует свой coversations где-нибудь.

1
ответ дан Tanktalus 7 November 2019 в 19:34
поделиться

Нет никакого хорошего пути. Единственные реальные опции, которые я вижу:

  1. Вы могли озираться в адресном пространстве процесса для нахождения информации о соединении и окна ID.
  2. Вы могли попытаться использовать netstat или lsof или ipcs для отображения соединений с Xserver, и затем (так или иначе! Вы должны будете базироваться, по крайней мере), смотрят на его информацию о соединении для нахождения их.
  3. При порождении экземпляра можно ожидать, пока другое окно не отображается, предположите, что это - правильное, и 'движение.
2
ответ дан wnoise 7 November 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: