Доброго времени суток!
Мне необходимо получать координаты окна, которое в данный момент находится в фокусе в KDE. Я пытаюсь получить координаты следующим способом:
Window *window, dummy;
int x, y, *revert_to_return;
XWindowAttributes attributes;
XSync(QX11Info::display, false);
XGetInputFocus(QX11Info::display, window, revert_to_return);
XGetWindowAttributes(QX11Info::display, window, &attributes);
XTranslateCoordinates(QX11Info::display, window, attributes.root, 0, 0, &x, &y, &dummy);
Но в результате я получаю сообщение об ошибке:
Error: BadWindow (invalid Window parameter) 3
Major opcode: 3 (X_GetWindowAttributes)
Resourse id: 0x1
Error: BadWindow (invalid Window parameter) 3
Major opcode: 40 (X_TranslateCoords)
Resourse id: 0xbf9b17c0
Если у кого-нибудь есть идеи в чем может быть проблема или кто-то может предложить другой способ решения данной задачи, то я был бы весьма благодарен.
Спасибо!
Получение координат окна, находящегося в фокусе
Модератор: Модераторы разделов
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: Получение координат окна, находящегося в фокусе
посмотри на libwnck
wnck-screen-get-default
wnck-screen-get-active-window
wnck-window-get-client-window-geometry
wnck-screen-get-default
wnck-screen-get-active-window
wnck-window-get-client-window-geometry
все сказанное есть имхо...
-
andrew1986
- Сообщения: 5
Re: Получение координат окна, находящегося в фокусе
Спасибо, но эта библиотека есть только для GNOM'а. Есть ли что-нибудь подобное для KDE?
-
gmorgunov
- Сообщения: 27
- ОС: linux mandriva2007
Re: Получение координат окна, находящегося в фокусе
Попробуйте передавать указатели, может пойдет.
Код: Выделить всё
Window *window, *dummy; // указатели на Window
int x, y, *revert_to_return;
XWindowAttributes *attributes; // указатель на атрибуты
XSync(QX11Info::display, false);
XGetInputFocus(QX11Info::display, window, revert_to_return);
XGetWindowAttributes(QX11Info::display, window, attributes); // изменена
XTranslateCoordinates(QX11Info::display, window, attributes->root, 0, 0, &x, &y, dummy); // изменена-
andrew1986
- Сообщения: 5
Re: Получение координат окна, находящегося в фокусе
gmorgunov писал(а): ↑10.07.2008 09:10Попробуйте передавать указатели, может пойдет.
Код: Выделить всё
Window *window, *dummy; // указатели на Window int x, y, *revert_to_return; XWindowAttributes *attributes; // указатель на атрибуты XSync(QX11Info::display, false); XGetInputFocus(QX11Info::display, window, revert_to_return); XGetWindowAttributes(QX11Info::display, window, attributes); // изменена XTranslateCoordinates(QX11Info::display, window, attributes->root, 0, 0, &x, &y, dummy); // изменена
К сожалению, не помогло
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: Получение координат окна, находящегося в фокусе
посмотри на исходники wmctrl и напиши свой велосипед
все сказанное есть имхо...