Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заблокировать 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо