Блокировка Windows
От: Аноним  
Дата: 16.12.05 11:26
Оценка:
Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.

Как это сделать на .Net, c#?
Re: Блокировка Windows
От: MatFiz Россия  
Дата: 16.12.05 11:42
Оценка: -2 :)
Здравствуйте, Аноним, Вы писали:

А>Есть форма (с кнопкапи 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 — не знаю. Если кто-то подскажет — будет круто!
How are YOU doin'?
Re: Блокировка Windows
От: LIN_ast  
Дата: 16.12.05 12:07
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.


А>Как это сделать на .Net, c#?


Что касается Alt-Tab и Alt-Esc, есть вариант зарегестрировать на это комбинации HotKey, в менеджер коде я этого не делал (хотя, я думаю, такой вариант есть, надо только поискать), но можно импортировать функции из не менеджер кода:
RegisterHotKey(hWnd, m_nHotKeyID+0, MOD_ALT, VK_TAB)
RegisterHotKey(hWnd, m_nHotKeyID+1, MOD_ALT, VK_ESCAPE)

и соответстрвенно для снятия хуков:
UnregisterHotKey(hWnd, m_nHotKeyID+0)
UnregisterHotKey(hWnd, m_nHotKeyID+1)

где m_nHotKeyID какой-нибудь идентификатор.
Re: Блокировка Windows
От: Alex Kirhenshtein Латвия http://www.netxms.org
Дата: 03.01.06 10:44
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.


идеи есть тут: http://www.windowsnetworking.com/kbase/WindowsTips/WindowsNT/AdminTips/Miscellaneous/DisableAltTab.html

про хот-кеи в C#: http://www.codeproject.com/csharp/popupkiller.asp
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
NetXMS: Open Source Network monitoring solution
Re: Блокировка Windows
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.06 16:28
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Есть форма (с кнопкапи 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&amp;mode=rank&amp;group=N
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Блокировка Windows
От: Smarty Россия  
Дата: 04.01.06 11:50
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Есть форма (с кнопкапи F1 .. F12, ESC, которые соответствуют клавиатурным), при работе она одна должна быть на экране одна во весь экран (без заголовка). Должны нажиматься только кнопки формы, всё остальное должно быть запрещено: Alt + Tab, Ctrl + Alt + Del и т.п. Возврат в Windows только после выхода из программы или например ввода пароля.


А>Как это сделать на .Net, c#?


А вот так:
1. Замутить свой хук типа WH_KEYBOARD_LL(именно с LL в конце — важно!). Хук на "чистом" C# пишется! Ну не без интер-опа, ессесно... Но ни строчки на плюсах!
2. В той функции, что будет ему подсунута в качестве колл-бэчной по хорошему последней строкой должно идти что-то вроде
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);

т.е. вызов следующего хука в цепочке хуков.
3. Вместо этого(по условию в зависимости от нажатых клавиш или просто безусловно) пишем
return 1;

т.е. не пропускаем клавишу по цепочке.

Готово. И это не теория — на WinXP проверено мною лично, смею полагать на Win2k та же фигня будет. Блокируется ВСЕ: Ctrl+Esc, Alt+Tab, Alt+Esc, .... Кроме, разумеется, Ctrl + Alt + Del. Эта комбинация не пропускается по цепочке хуков и обрабатывается системой особо. Подавить ее можно только жесточайшим хаком типа kernel level filter, но стоит ли?
Блокировка Windows
От: Аноним  
Дата: 03.01.06 11:20
Оценка:
см. Глобальный перехват нажатия клавиш
(Hotkeys / Hook не используются)


---
см.: TaskRunner, PopupWindow, Html2XmlConverter, Win32ResourceManager, MenuBuilder, Lens .


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.