Форум: "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