Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: serega-5508 от Октябрь 02, 2011, 15:01



Название: Реализация проекта
Отправлено: serega-5508 от Октябрь 02, 2011, 15:01
Идея такая: нужно написать прогу, которая будет блокировать рабочий стол, др. элементы, программы, чтобы нельзя было ничего делать, кроме этой программы, пока она включена. Когда выходишь из программы, можно работать в обычном режиме. Вопрос: это как-то можно реализовать в Qt и как, если возможно?


Название: Re: Реализация проекта
Отправлено: andrew.k от Октябрь 02, 2011, 15:09
Попробуй показать форму на весь экран в режиме поверх всех.
+
grabKeyboard и grabMouse (http://doc.qt.nokia.com/latest/qwidget.html#grabKeyboard)


Название: Re: Реализация проекта
Отправлено: serega-5508 от Октябрь 02, 2011, 16:51
пробовал grabKeyboard - но всё же я могу переключать окна программы (Alt+Tab). мне нужно только чтобы было это окно.


Название: Re: Реализация проекта
Отправлено: Даниил от Октябрь 02, 2011, 16:53
Очередной порно-баннер пишем?


Название: Re: Реализация проекта
Отправлено: andrew.k от Октябрь 02, 2011, 17:21
пробовал grabKeyboard - но всё же я могу переключать окна программы (Alt+Tab). мне нужно только чтобы было это окно.
Если оно будет поверх всех (я использовал флаги Qt::FramelessWindowHint | Qt::Window | Qt::WindowStaysOnTop) то другие приложения не выйдут на передний план. Правда могут получать фокус.


Название: Re: Реализация проекта
Отправлено: serega-5508 от Октябрь 02, 2011, 17:26
Очередной порно-баннер пишем?

Вообще отморозок что ли?!? не пались, если у самого рука из под стола не вылазит.


Название: Re: Реализация проекта
Отправлено: andrew.k от Октябрь 02, 2011, 17:32
Очередной порно-баннер пишем?

Вообще отморозок что ли?!? не пались, если у самого рука из под стола не вылазит.
Ну что ты ведешься на провокацию? Промолчал бы умнее бы выглядел.


Название: Re: Реализация проекта
Отправлено: andrew.k от Октябрь 02, 2011, 17:33
Кстати мне тоже интересно как обойти альт+таб.
У меня одно приложение в изолированной среде, поэтому мне достаточно описанного выше подхода.


Название: Re: Реализация проекта
Отправлено: serega-5508 от Октябрь 02, 2011, 18:53
ну как бы метод grabKeyboard - блокирует ввод клавиатуры, но только текста, ну и, конечно, окно можно закрывать при помощи Atl+F4, а хотелось бы сделать типа такого: вводишь логин, пароль, и окно это исчезает.


Название: Re: Реализация проекта
Отправлено: LisandreL от Октябрь 03, 2011, 07:36
Ну, от alt+f4 скорее всего можно избавиться переопределив closeEvent главного окна.
Но через ctrl+alt+delete и диспетчер задач ваш процесс всё равно можно будет прибить.

Как показывают упомянуты выше Даниилом блокировщики-вымогатели СМС обойти это можно, но вряд ли используя документированные api системы.

Это если про Windows говорить.


Название: Re: Реализация проекта
Отправлено: Igors от Октябрь 03, 2011, 11:19
Здравый смысл говорит что в Qt таких средств быть не должно.

На Mac есть "DirectDisplay", можно захватить все или некоторые дисплеи. Но отладчик тоже попадает под удар, поэтому после десятка перезагрузок я эти эксперименты прекратил. Потом заметил что некоторые модули (напр связанные с OpenGL) умеют прорываться к экрану и через эту блокировку.

А написать порно-баннер - работа не хуже других, видео Вам дадут.   


Название: Re: Реализация проекта
Отправлено: SASA от Октябрь 03, 2011, 17:07
Делал такое на WIN API. Окошко самого верхнего уровня (типа диспетчера задач) и таймер, который подбрасывает окно. Алт таб работает но не успеваешь ничего сделать твое окошко  вылезает на передний план.

PS Отлаживать такое - ужас. Выход из дебага - рессет:) Поэтому сразу лучше зашить какую-нибудь магическую комбинацию.


Название: Re: Реализация проекта
Отправлено: Даниил от Октябрь 03, 2011, 19:02
Выход из дебага - рессет:)
В моя книжку цитат прогеров  ;D


Название: Re: Реализация проекта
Отправлено: vertus от Октябрь 04, 2011, 09:08
Нужно кроссплатформенное решение? Есть похожее решение для Linux, возможно сможешь заточить под себя.


Название: Re: Реализация проекта
Отправлено: serega-5508 от Октябрь 04, 2011, 14:37
vertus, скинь, что есть под Linux, если можешь.


Название: Re: Реализация проекта
Отправлено: vertus от Октябрь 04, 2011, 14:45
Да там не код, там администрирование больше.

Я тебе могу принцип рассказать.

Основной смысл в том, чтобы при загрузке linux подменить в init подменить линуксовую программу своей. А там что хочешь дальше делай.

Если такое решение подойдет, могу подробнее рассказать.


Название: Re: Реализация проекта
Отправлено: sergun1604 от Октябрь 12, 2011, 08:41
ну вот неужели в таких постерах рождаются вирусы для линукс...
Админы спасайте пингвина.