Как создать горячую клавишу

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

12 авг 2013, 19:58

Всем привет! Покопал поиск по форуму, тема изъезжена, в общем и я в этом уже что-то для себя набрал. Но вопросы появляются снова. Пишу прогу с 5-ю формами, программа работает со сканером штрих-кода, хочу сделать так, чтобы пользователь не мышкой тянулся к кнопке опроса сканера, а по горячей клавише например стукнул, например на F5. Но нужно сделать так, чтобы эта клавиша работала независимо от фокуса курсора в программе, а так же не работала когда программа не активна, т.е в других приложениях и прочее. При этом чтобы срабатывала на любой из 5 форм моей программы. Вот такую вот задачку себе поставил... Есть предложения? ))))
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

12 авг 2013, 21:00

Гугли, это перехватом сообщений делается, тема реально заезженная..
[syntax=Delphi] [/syntax]
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

13 авг 2013, 06:18

Ну вот )) нашел ))) То что доктор прописал )))

Код: Выделить всё

  private
   procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
    { Private declarations }
  public
    { Public declarations }
  end;

const
  MyHotKey = ord('1');

var
  Form1: TForm1;
....

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
 Showmessage('Нажали');
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, MyHotKey, 0, MyHotKey);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Form1.Handle, MyHotKey);
end;

Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить