БОЛЬШОЙ FAQ ПО DELPHI



Как определить нажаты ли клавиши Shift, Alt или Ctrl в какой-либо момент времени

Пpиходит пpогpаммист к пианистy - посмотpеть на новый pояль. Долго ходит вокpyг, хмыкает, потом заявляет: - Клава неyдобная - всего 84 клавиши, половина фyнкциональных, ни одна не подписана, хотя... шифт нажимать ногой - оpигинально.

В приведенном примере показано как определить нажата ли клавиша Shift при выборе строчки меню. Пример также содержит функции проверки состояния клавиш Alt, Ctrl.


 function CtrlDown : Boolean;
 var
   State : TKeyboardState;
 begin
   GetKeyboardState(State);
   Result := ((State[vk_Control] and 128) <> 0);
 end;
 
 function ShiftDown : Boolean;
 var
   State : TKeyboardState;
 begin
   GetKeyboardState(State);
   Result := ((State[vk_Shift] and 128) <> 0);
 end;
 
 function AltDown : Boolean;
 var
   State : TKeyboardState;
 begin
   GetKeyboardState(State);
   Result := ((State[vk_Menu] and 128) <> 0);
 end;
 
 procedure TForm1.MenuItem12Click(Sender: TObject);
 begin
   if ShiftDown then
     Form1.Caption := 'Shift'
   else
     Form1.Caption := '';
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ