|
|
|
|
Как
назначить горячие клавиши (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
|
|