| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Активировать главное окно приложения по PID-у |
| Автор: Alca 5.11.2012, 20:26 |
| Как активировать (вывести на передний план рабочего стола) главное окно приложения по PID-у (id процесса)? |
| Автор: loneybibi 6.11.2012, 00:08 | ||
думаю кросс-платформенно никак ! это зависит от компоновщика окон ОС, в Виндовс это API, в линукс X.org(DBus) думаю надо будет под каждую ОС свой код писать.. |
| Автор: borisbn 6.11.2012, 09:09 | ||
Я это делал под Windows таким (извращенским на мой взгляд) способом:
|
| Автор: tzirechnoy 6.11.2012, 14:13 |
| В линуксе примерно такжэ, как и в винде -- получить (перебрать) список окон, определить для каждого его PID (в случае линукса -- PID и host, на самом деле, окна с таким PID могут быть осзданы разными хостами), если какой-то подходит -- активировать. Список окон нормальный получается из свойства (property) _NET_CLIENT_LIST у root window. Более полный -- перебором через XQueryTree на root windows (ну, примерно как http://lj.rossia.org/users/ketmar/709591.html?thread=4565719#t4565719). PID записан в свойство _NET_WM_PID у окна, хост -- в WM_CLIENT_MACHINE. Активируется окно -- как описано http://standards.freedesktop.org/wm-spec/1.4/ar01s03.html#id2746435. |
| Автор: Alca 7.11.2012, 22:07 |
| http://dev.libqxt.org/libqxt/src/42b2525cb578/src/gui/qxtwindowsystem.h http://dev.libqxt.org/libqxt/src/42b2525cb578/src/gui/qxtwindowsystem_win.cpp http://dev.libqxt.org/libqxt/src/42b2525cb578/src/gui/qxtwindowsystem_x11.cpp |