Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Блокировка клавиши Windows   Найти похожие ветки 

 
alex-drob   (2005-07-04 01:37) [0]

Как заблокировать нажатие клавиши Windows?


 
alpet ©   (2005-07-04 08:19) [1]

Через ловушки.


 
alex-drob   (2005-07-04 12:47) [2]

Какие?

Нашёл вариант с помощью CreateDesktop, но как потом при переключении на новый Desktop запустить в нём мою программу?


 
alpet ©   (2005-07-04 14:09) [3]

SetWindowsHookEx + WH_KEYBOARD или WH_KEYBOARD_LL. Позволяет пропускать через собственную Callback функцию все нажатия клавиш в системе, или раз тебе так нужно - не пропускать. Детали см. в MSDN.


 
alex-drob   (2005-07-04 14:18) [4]


> WH_KEYBOARD

Не работает для клавиши Windows. Все кнопки отключаются а эта нет.


 
Весёлый   (2005-07-04 18:11) [5]

Вот лови:

Данный код блокирует на клавиатуре калвиши (левый и
правый)Ctr+Esc, (левый и правый)Alt+Tab, а также
     Alt+пробел, (левый и правый) Win.

type
KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo:Pointer;
end;
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;

const
LLKHF_ALTDOWN = KF_ALTDOWN shr 8;
WH_KEYBOARD_LL = 13;

function KeyboardProc(nCode: integer; wParam: longint; lParam:
longint): integer; stdcall;
var
KeyStroke: boolean;
p: PKBDLLHOOKSTRUCT;
begin
KeyStroke := false;
if (nCode = HC_ACTION) then
begin
case wParam of
WM_KEYDOWN, WM_SYSKEYDOWN,
WM_KEYUP, WM_SYSKEYUP:
begin
p := PKBDLLHOOKSTRUCT(lParam);
KeyStroke :=
( (p^.vkCode = 91) ) or ( (p^.vkCode = 92) ) or
( (p^.vkCode = VK_TAB) and ((p^.flags and
LLKHF_ALTDOWN) <> 0) ) or
( (p^.vkCode = VK_ESCAPE) and ((p^.flags and
LLKHF_ALTDOWN) <> 0) ) or
( (p^.vkCode = VK_ESCAPE) and
((GetKeyState(VK_CONTROL) and $8000) <> 0) ) or
( (p^.vkCode = 46) and ( (p^.flags and LLKHF_ALTDOWN) <>
0 ) and
( (GetKeyState(VK_CONTROL) and $8000) <> 0));
end;
end;
end;

if KeyStroke then
result := 1
else
result := CallNextHookEx(0, nCode, wParam, lParam);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
HKBD: HHook;
begin
BlockForm.Cursor:=crnone;
BlockPanel.Cursor:=crnone;
BlockMask.Cursor:=crnone;

HKBD := SetWindowsHookEx(WH_KEYBOARD_LL,
@KeyboardProc, HInstance, 0);
end;


 
alex-drob   (2005-07-05 00:29) [6]

Спасибо!


 
alex-drob   (2005-07-05 00:29) [7]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
14-1122309910
YurikGL
2005-07-25 20:45
2005.08.21
Поздравляю!!!


1-1122641358
slotti
2005-07-29 16:49
2005.08.21
Как узнать количество созданных обьектов ?


1-1122583733
Katya21
2005-07-29 00:48
2005.08.21
Memo Richedit и Steam


14-1122457362
NewWonder
2005-07-27 13:42
2005.08.21
Делюсь большой радостью!


14-1122458902
ЯВ
2005-07-27 14:08
2005.08.21
Тоже о ГАИ, но по другому вопросу....