Delphi World - Различить правый и левый Ctrl
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Различить правый и левый Ctrl


Приходит студент-программист с утра весь злой. Его одногрупники спрашивают:
- Ты че такой злой?
- Да программу вчера всю ночь набивал.
- И что не заработала?
- Да нет, заработала.
- Может неправильно заработала?
- Да нет, правильно.
- А что тогда?
- Да на backspace уснул...

Для того, чтобы отличить нажат левый или правый Ctrl, нужно перехватить событие WM_KEYDOWN. В зависимости от состояния 24-ого бита параметра LParam нажата правая или левая клавиша.


public
  procedure WMKEYDOWN(var msg: TMessage); message WM_KEYDOWN;
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMKEYDOWN(var msg: TMessage);
begin
  if (msg.LParam and (255 shl 16)) shr 16 <> 29 then
    Exit;
  if msg.LParam and (1 shl 24) > 0 then
    Form1.Caption := 'Right'
  else
    Form1.Caption := 'Left';
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования