Получение PID'a по хэндлу окна (Linux+X window)

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Получение PID'a по хэндлу окна (Linux+X window)

Сообщение coyot.rush » 24.09.2009 10:35:12

Собственно говоря как получить PID приложения(процесса) по хэндлу окно (чужого) используя средства X window ?
PS:
Можно тоже самое средствами MSE ?
Очень хочеться написать аналог PC Bost для Linux (Увелечение приоритета приложения с которым работает пользователь)
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Получение PID'a по хэндлу окна (Linux+X window)

Сообщение v-t-l » 24.09.2009 12:49:57

Можно порыться в исходниках утилиты xkill, но
wikipedia.org писал(а):Unlike kill, xkill does not request that the client process, which may be running on a different machine, be terminated. In fact, the process can continue running without an X connection. Most clients, however, do abort when their X connections are unexpectedly closed.
http://en.wikipedia.org/wiki/Xkill

Добавлено спустя 7 минут 27 секунд:
в общем, процесс соединяется с X-сервером по специальному протоколу, т.е., грубо говоря, прога может работать на одном компе, а рисовать свои окна на другом.
v-t-l
энтузиаст
 
Сообщения: 727
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Получение PID'a по хэндлу окна (Linux+X window)

Сообщение coyot.rush » 24.09.2009 13:16:04

Пробовал :(
..........
xlib.pp
..........
function XKillClient(para1:PDisplay; para2:TXID):cint;cdecl;external libX11;
.........
Пример http://kylixportal.narod.ru/articles/xwnd.htm
Эта функция убивает приложение по хэндлу окна. Мне немного другое нужно :)
Исходники нужны, но не XKill, а krunner (KDE) , он показывает соответствие названию окна и PID'а процесса.
В goole не посылать , был, искал с промощью поиска открытока кода. Нашел. Искал в них по ключевым словам window list. И тоже нашел TODO :wink: Типа на будующее. Правда версия 3.9 а сейчас 4.х

PS
Хорошо одно, точто х сервер однозначно определяет соответствие хэндля окна и пида приложения
Если у кого есть свежие сырцы krunner кинте на мыло яндекса для coyot.rush

Добавлено спустя 7 минут 11 секунд:
в общем, процесс соединяется с X-сервером по специальному протоколу, т.е., грубо говоря, прога может работать на одном компе, а рисовать свои окна на другом.

Знаю. Но клиент и сервер на одном компе.
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Получение PID'a по хэндлу окна (Linux+X window)

Сообщение Sergei I. Gorelkin » 24.09.2009 13:55:53

1) См. исходники утилиты xlsclients.
2) PID процесса находится в свойстве окна _NET_WM_PID, откуда его можно спокойно прочитать с помощью XGetWindowProperty. А имя машины, откуда пришел клиент, лежит в свойстве WM_CLIENT_MACHINE. Но записываются эти свойства клиентом, поэтому соответствие их реальности находится на его совести.
3) Чтобы в Линуксе повышать приоритет, нужны рутовые полномочия.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Получение PID'a по хэндлу окна (Linux+X window)

Сообщение coyot.rush » 24.09.2009 15:47:52

3) Чтобы в Линуксе повышать приоритет, нужны рутовые полномочия.

1)Наверное сделаю в виде демона стартуешем при запуске системы, что бы каждый раз пароль не пришлось вводить
2) Или понизить приоритеты всех приложений пользователя кроме систмных (root'x)
2) PID процесса находится в свойстве окна _NET_WM_PID, откуда его можно спокойно прочитать с помощью XGetWindowProperty. А имя машины, откуда пришел клиент, лежит в свойстве WM_CLIENT_MACHINE. Но записываются эти свойства клиентом, поэтому соответствие их реальности находится на его совести.

Спасибо что направили в нужное русло.
Вот нашел
http://www.rsdn.ru/forum/unix/2553619.all.aspx
Если какая-сь тулза, которая умеет показывать, какой процесс отвечает за определенное окно?
Код: Выделить всё
$xprop | grep _NET_WM_PID | cut -f 2 -d "=" | xargs ps

1) См. исходники утилиты xlsclients

Пошел искать исходники xlsclients,xprop,xargs :D
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Получение PID'a по хэндлу окна (Linux+X window)

Сообщение Sergei I. Gorelkin » 24.09.2009 16:03:41

xargs немного не оттуда (она не относится к иксам). Она просто читает стандартный ввод и передает его своему аргументу как параметр командной строки.

Чтение свойств (функциональность xprop) в MSE есть, но только в платформенно-зависимой части (i386-linux/mseguiintf.pas) и наружу не торчит.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Получение PID'a по хэндлу окна (Linux+X window)

Сообщение coyot.rush » 24.09.2009 16:21:29

xargs немного не оттуда (она не относится к иксам). Она просто читает стандартный ввод и передает его своему аргументу как параметр командной строки.

Круг сужаеться
Чтение свойств (функциональность xprop) в MSE есть, но только в платформенно-зависимой части (i386-linux/mseguiintf.pas) и наружу не торчит.

И не надо. У меня под вынь гдето на винте в недоработанном варианте валяеться :)
А за точто подсказали где можно подчерпныть инфу не читая мсходники на С спасибо.
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48


Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru