Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Qt блокировка мыши и клавиатуры

Автор: Skier78rus 31.8.2011, 12:51

Добрый день.

Мне нужно написать приложение, которое по команде от сервера будет выводить во весь экран картинку, и блокировать все действия мыши и клавиатуры.


Так как изначально было сказано, что это нужно под винды, то воспользовавшись функциями SetWindowsHookEx и UnhookWindowsHookEx, я сделал то, что требовалось.

Но потом выяснилось, что это нужно сделать под nix. Почитав в интернете, я не нашел ничего похожего на команды которые я использовал под винды.


Подскажите в какую сторону копать.

Так же у меня возник вопрос, как в Qt сделать так, чтобы после запуска приложения, оно не появлялось в taskbar`e, а появлялось в трее( сверху справа там где часы) или вообще нигде не появлялось(чтобы была видна только через команду top).



Буду очень благодарен любой информации.

Автор: silver47 31.8.2011, 13:22

Цитата(Skier78rus @ 31.8.2011, 15:51) *
Так как изначально было сказано, что это нужно под винды, то воспользовавшись функциями SetWindowsHookEx и UnhookWindowsHookEx, я сделал то, что требовалось.
Но потом выяснилось, что это нужно сделать под nix

Логично что winAPI нет под линуксом. Как такое реализовать не представляю. Поставить флаг "поверх всех окон"?

Цитата(Skier78rus @ 31.8.2011, 15:51) *
Так же у меня возник вопрос, как в Qt сделать так, чтобы после запуска приложения, оно не появлялось в taskbar`e, а появлялось в трее

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

Автор: Skier78rus 31.8.2011, 13:39

Цитата(silver47 @ 31.8.2011, 14:22) *
Логично что winAPI нет под линуксом. Как такое реализовать не представляю. Поставить флаг "поверх всех окон"?


Это я прекрасно понимаю 8)

Я уже нашел консольные команды такие как:

xinput set-int-prop 3 \"Device Enabled\" 8 0

И понял, что их можно запустить через QProcess, что пока у меня не вышло.

Цитата(silver47 @ 31.8.2011, 14:22) *
Есть очень хороший пример в составе Qt - systray кличут. Там многое чего по трею, вплоть до того как вообще запретить закрытие приложения.


Спасибо, сейчас посмотрю.

Автор: silver47 31.8.2011, 13:47

Цитата(Skier78rus @ 31.8.2011, 16:39) *
Я уже нашел консольные команды такие как:
xinput set-int-prop 3 \"Device Enabled\" 8 0
И понял, что их можно запустить через QProcess, что пока у меня не вышло.


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

Автор: Skier78rus 31.8.2011, 15:01

Цитата(silver47 @ 31.8.2011, 14:47) *
Нужно понимать, что для их работы, наверняка требуются права рута, а ваша программа запускается с правами рядового пользователя. Если с QProcess не работали, то рекомендую начать с малого, например запустить mc.



Я сразу проверил их через консоль, они не требуют права рута. Под никсом работаю в основном в mc(если я правильно понял midnight commander).

На данный момент уже через QProcess и xinput --list удалось получить список устройств, и определить id мыши.


Автор: wiz29 31.8.2011, 15:24

http://doc.qt.nokia.com/4.2/desktop-systray.html

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)