Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.
Здравствуйте, Аноним, Вы писали:
А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.
А>Как это сделать на .Net, c#?
FormBorderStyle = None
WindowState = Maximized
TopMost = true
Кнопки — KeyPreview для формы в true, обрабатывай KeyDown или KeyUp (лучше, потому что повторных нажатий при залипании нету)
Ctrl + Alt + Del можно "запретить", временно переименовав C:\WINDOWS\system32\taskmgr.exe во что-нибудь другое (нужны права, диспетчер задач не должен быть запущен).
Как расправиться с Alt + Tab — не знаю. Если кто-то подскажет — будет круто!
Здравствуйте, Аноним, Вы писали:
А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.
А>Как это сделать на .Net, c#?
Что касается Alt-Tab и Alt-Esc, есть вариант зарегестрировать на это комбинации HotKey, в менеджер коде я этого не делал (хотя, я думаю, такой вариант есть, надо только поискать), но можно импортировать функции из не менеджер кода:
Здравствуйте, <Аноним>, Вы писали:
А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.
Здравствуйте, <Аноним>, Вы писали:
А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.
А>Как это сделать на .Net, c#?
Перекрыть Ctrl + Alt + Del на Шарпе не выжет. Этот шортак обрабатывается системой. И перекрыть его можно только серьезными хаками на уровне ОС. Там все не просто. Есть такая фигня Gina.dll, но я это все смутно помню. Так что поиса тебе поможет. http://rsdn.ru/search/?q=Ctrl+%2B+Alt+%2B+Del&mode=rank&group=N
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, <Аноним>, Вы писали:
А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.
А>Как это сделать на .Net, c#?
А вот так:
1. Замутить свой хук типа WH_KEYBOARD_LL(именно с LL в конце — важно!). Хук на "чистом" C# пишется! Ну не без интер-опа, ессесно... Но ни строчки на плюсах!
2. В той функции, что будет ему подсунута в качестве колл-бэчной по хорошему последней строкой должно идти что-то вроде
т.е. вызов следующего хука в цепочке хуков.
3. Вместо этого(по условию в зависимости от нажатых клавиш или просто безусловно) пишем
return 1;
т.е. не пропускаем клавишу по цепочке.
Готово. И это не теория — на WinXP проверено мною лично, смею полагать на Win2k та же фигня будет. Блокируется ВСЕ: Ctrl+Esc, Alt+Tab, Alt+Esc, .... Кроме, разумеется, Ctrl + Alt + Del. Эта комбинация не пропускается по цепочке хуков и обрабатывается системой особо. Подавить ее можно только жесточайшим хаком типа kernel level filter, но стоит ли?