Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Ground от Ноябрь 21, 2012, 14:13



Название: Как получить список окон верхнего уровня во всей системе?
Отправлено: Ground от Ноябрь 21, 2012, 14:13
Собственно, сабж. Хотелось бы средствами Qt, т.к. АПИ-вариант не вызывает проблем.
QApplication::topLevelWidgets() не подходит, т.к. возвращает только окна верхнего уровня для текущего приложения.


Название: Re: Как получить список окон верхнего уровня во всей системе?
Отправлено: Bepec от Ноябрь 21, 2012, 14:28
Вам не кажется глупым этот вопрос?

Апи вариант для каждой системы разный. Даже не так - для каждого оконного менеджера разный.

Если для вас не составляет проблем получить все окна верхнего уровня - напишите класс, который будет это делать в зависимости от оконного менеджера.

PS пока что я о таком не слышал.


Название: Re: Как получить список окон верхнего уровня во всей системе?
Отправлено: Alex Custov от Ноябрь 21, 2012, 14:36
Для Win32 - EnumWindows, для X11 - используй NETWM и _NET_CLIENT_LIST


Название: Re: Как получить список окон верхнего уровня во всей системе?
Отправлено: Ground от Ноябрь 21, 2012, 15:01
Вам не кажется глупым этот вопрос?

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

Для Win32 - EnumWindows, для X11 - используй NETWM и _NET_CLIENT_LIST
Благодарю за информацию.

Ну если нет в Qt нет таких функций, можно считать вопрос закрытым. Спасибо за помощь.