Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Блокировка клавиши 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
14-1122466072
desam
2005-07-27 16:07
2005.08.21
jimm


1-1122987824
webpauk
2005-08-02 17:03
2005.08.21
Иконка из Hinstance


11-1105695193
DmiSb
2005-01-14 12:33
2005.08.21
Печать страницы Excel не показывая самого Excel ?


1-1122823023
TStas
2005-07-31 19:17
2005.08.21
Как делят потоки стек?


4-1120138852
<Lelik>
2005-06-30 17:40
2005.08.21
Про CB_DIR





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский