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

Вниз

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

 
Switer   (2005-05-06 22:30) [0]

Данный код блокирует на клавиатуре калвиши  (левый и правый)Ctr+Esc, (левый и правый)Alt+Tab, а также Alt+пробел, и левую кнопку Win.
Мастера Delphi, как модернзировать данный код, чтобы помимо блокировки левой клавиши Win на клавиатуре, блокировалась еще  и правая клавиша 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 = 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;


 
Switer   (2005-05-07 08:46) [1]

Может кто нибудь знает другой вариант кода блокировки клавиш???


 
Antonn ©   (2005-05-07 09:06) [2]

код второго Вина 92


 
Switer   (2005-05-07 10:00) [3]

А по подробней?


 
Switer   (2005-05-07 10:01) [4]

Может приведете пример?


 
boalse ©   (2005-05-07 10:48) [5]

KeyStroke :=(p^.vkCode =92)or...


 
Deka ©   (2005-05-07 11:22) [6]

Замени в своем коде

( (p^.vkCode = 91) ) or

на

( (p^.vkCode = 91) ) or ( (p^.vkCode = 92) ) or


 
alpet ©   (2005-05-07 13:39) [7]

Windows.pas:
{$EXTERNALSYM VK_LWIN}
VK_LWIN = 91;
{$EXTERNALSYM VK_RWIN}
VK_RWIN = 92;


 
Switer   (2005-05-07 15:36) [8]

Большое спасибо за помощь. Только вот еще одна проблемка: На клавиатуре также имеется кнопка Конекстного меню -  можно ли и её тоже каким либо образом заблокировать?


 
Switer   (2005-05-07 16:48) [9]

Или она не блокируется?


 
alpet ©   (2005-05-07 17:20) [10]

VK_APPS = 93;
Applications key (Natural keyboard)



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

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

Наверх




Память: 0.49 MB
Время: 0.026 c
14-1117549387
Drow
2005-05-31 18:23
2005.06.29
блок схема


3-1116407444
Iova
2005-05-18 13:10
2005.06.29
InterBase с помощью ADO.


3-1116003967
seregka
2005-05-13 21:06
2005.06.29
Непонятная ошибка


14-1117215030
Dream3D
2005-05-27 21:30
2005.06.29
Посоветуйте сайт


3-1115995250
Lex_!
2005-05-13 18:40
2005.06.29
TThread и работа с базой