Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi

Дата: 17.12.01 10:35


Как назначить горячие клавиши (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
Метод не единственный, но поможет.

Чтобы вернуться оцените этот вопрос/ответ:
   

Прислать свои комментарии


Новое на сайте

Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо