На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Пользовательский интерфейс / Как назначить горячие клавиши (shortcuts), чтобы они были доступны даже если сейчас активна другая программа (как это делает аська). Сделать домашней страницей Добавить в избранное Написать писмо

Как назначить горячие клавиши (shortcuts), чтобы они были доступны даже если сейчас активна другая программа (как это делает аська).


Попробуй этот код:

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  protected
    procedure hotykey(var msg:TMessage); message WM_HOTKEY;
  end;

var
  Form1: TForm1;
  id,id2:Integer;

implementation

{$R *.DFM}


procedure TForm1.hotykey(var msg:TMessage);
begin
  if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
  begin
    ShowMessage('Ctrl + Q wurde gedrьckt !');
  end;

  if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82) then
  begin
    ShowMessage('Ctrl + R wurde gedrьckt !');
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  id:=GlobalAddAtom('hotkey');
  RegisterHotKey(handle,id,mod_control,81);

  id2:=GlobalAddAtom('hotkey2');
  RegisterHotKey(handle,id2,mod_control,82);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(handle,id);
  UnRegisterHotKey(handle,id2);
end;


Комментарий от Евгения Гаечкина (johnnycrisjoe@mail.ru)
при смене стиля окна с fsStayOnTop на fsNormal и обратно(предполагаю, что так происходит при смене стиля на любой), у него меняется handle, и соответственно сообщения WM_HOTKEY перестают поступать. Метод реанимации, в принципе прост:
UnRegisterHotKey со старым handle
смена стиля окна
RegisterHotKey - с новым handle
Метод не единственный, но поможет.

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz