Главная страница
    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.45 MB
Время: 0.023 c
6-1115393572
Gluck99
2005-05-06 19:32
2005.08.21
Контроль и просмотр траффика


5-1093596786
Salivan
2004-08-27 12:53
2005.08.21
TTreeView + MultiSelect ? это возможно?


9-1114391502
Don Nikola
2005-04-25 05:11
2005.08.21
Всем любителям 3D, MMORPG и прочего высокотехнологичного ...


1-1122965017
henston
2005-08-02 10:43
2005.08.21
создание серваса


1-1122906825
Starcom
2005-08-01 18:33
2005.08.21
Как в приложении вызвать процедуру для вывода изображения из RES





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский