Главная страница
    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.038 c
3-1116562845
Alex_d
2005-05-20 08:20
2005.06.29
Добавление поля в уже существующую таблицу


1-1117784861
312Kbps
2005-06-03 11:47
2005.06.29
Работа с файлом txt !!!


14-1117547432
ЯВ
2005-05-31 17:50
2005.06.29
Срочный вопрос :)


14-1116820938
Alex Konshin
2005-05-23 08:02
2005.06.29
ICQ клиент


14-1117215030
Dream3D
2005-05-27 21:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский