Главная страница
    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.039 c
1-1117790059
sofs
2005-06-03 13:14
2005.06.29
Как преодразовать HEX-число в символ?


3-1116718926
grol
2005-05-22 03:42
2005.06.29
Как из ADOQuery ков перенести информацию в Excel?


14-1117908515
Udaff
2005-06-04 22:08
2005.06.29
проблема с печатью


4-1114862396
Новичек
2005-04-30 15:59
2005.06.29
Рисование с помощью API.


1-1117738255
Profi
2005-06-02 22:50
2005.06.29
Проблема при использовании dll в качестве plugina





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