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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.04 c
1-1118086794
Pasha L
2005-06-06 23:39
2005.06.29
openDialog


1-1117921250
Green_Templar
2005-06-05 01:40
2005.06.29
screen.cursor


1-1117793065
Andrey Kononov
2005-06-03 14:04
2005.06.29
Передача параметров в форму


6-1112326674
atruhin
2005-04-01 07:37
2005.06.29
Влияние Content-Length на Keep-Alive в HTTP протоколе


1-1117896808
-=GUEST=-
2005-06-04 18:53
2005.06.29
Как определить запускают программу как сервис или приложение?





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