![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заблокировать Enter [D7, XP]
DDR2 © (2009-03-22 15:16:00)Здравствуйте, Мастера!
Подскажите пожалуйста, как можно отключить клавишу ENTER?
Кролик Иа-Иа (2009-03-22 16:59:00) [1]Удалено модератором
@!!ex (2009-03-22 16:58:00) [2]> [2] DDR2 (22.03.09 15:29)
> Спасибо большое что откликнулись! Я в этом коде почти ничего
> не понял:(
Гугли на тему Hooks.
Если в кратце, то устанавливается ловушка на нажатие клавиш.
Проверяется, если нажатая клавиша - RETURN(тобмшь Enter), то сообщаем системе что все обработано и остальные обработчики игнорируем.
В противном случае передаем обработку дальше.
(2009-03-22 16:54:00) [3]Удалено модератором
Palladin (2009-03-22 16:34:00) [4]а то, ой, а как мне зелененький шарфик на шею натянуть...
...а красненькие перчаточки по швам трескаются, когда шарфик натягиваю и ноги мокнут...
Palladin (2009-03-22 16:31:00) [5]
> DDR2 (22.03.09 16:15) [6]
ага. ты вообще определись чего тебе надо.
Кролик Иа-Иа (2009-03-22 16:19:00) [6]
> DDR2 (22.03.09 16:05) [4]
> Странно....
странно...
VK_RETURN <> VK_LWIN
DDR2 (2009-03-22 16:15:00) [7]
> нужно воспользоваться тем, что ты не понял.
Вы имеете в виду код выше всех постов?
Palladin (2009-03-22 16:11:00) [8]Что бы меню не появилосб нужно воспользоваться тем, что ты не понял.
DDR2 (2009-03-22 16:05:00) [9]Странно....
Проверки ради решил проверить с клавишей Win
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_LWIN then
Key:=0;
Меню появилось.......
Кролик Иа-Иа (2009-03-22 16:01:00) [10]
if Key = VK_RETURN then
здесь каким-то образом заблокировать клавишу Enter
т.е Key:=0;
DDR2 (2009-03-22 15:29:00) [11]Спасибо большое что откликнулись! Я в этом коде почти ничего не понял:(
Я пытаюсь просто с сообщением, типа так:
if Key = VK_RETURN then
здесь каким-то образом заблокировать клавишу Enter
DVM (2009-03-22 15:22:00) [12]
{******************************************************************************}
{* Module: DisableLowLevelKeys.cpp *}
{* Notices: Written 2000 Jeffrey Richter *}
{* *}
{* Translated by: Dmitry Muratov *}
{* 2008 *}
{******************************************************************************}
program DisableLowLevelKeys;
uses
Windows, Messages;
const
LLKHF_ALTDOWN = KF_ALTDOWN shr 8;
WH_KEYBOARD_LL = 13;
type
TKBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
var
hhkLowLevelKybd: HHOOK;
//------------------------------------------------------------------------------
function LowLevelKeyboardProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
fEatKeystroke: boolean;
p: PKBDLLHOOKSTRUCT;
begin
fEatKeystroke := false;
if nCode = HC_ACTION then
begin
case wParam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
begin
p := PKBDLLHOOKSTRUCT(lParam);
fEatKeystroke := p^.vkCode = VK_RETURN;
end;
end;
end;
if fEatKeystroke then
result := 1
else
result := CallNextHookEx(0, nCode, wParam, lParam);
end;
//------------------------------------------------------------------------------
begin
// Install the low-level keyboard & mouse hooks
hhkLowLevelKybd := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
// Keep this app running until we're told to stop
MessageBox(0,
PChar('ENTER are now disabled.' + #13#10 +
'Click "Ok" to terminate this application and re-enable these keys.'),
PChar('Disable Low-Level Keys'),
MB_OK);
// Remove hooks
UnhookWindowsHookEx(hhkLowLevelKybd);
end.