Home » Tipps & Tricks » System » Prozesse » Systemweiten HotKey definieren

Systemweiten HotKey definieren

Will man auf Tastatureingaben auch dann reagieren, wenn das eigene Fenster nicht angewählt oder minimiert ist, so hilft ein systemweiter Hotkey.Die ID ist eindeutig und im Bereich 0x0000 bis 0xBFFF. Die verschiedenen Hotkeys werden im folgenden mit den ID’s ID, ID+1 bis ID+x bezeichnet.

type
  TWMHotkey = record
    Msg: Cardinal;
    idHotKey: Word;
    Modifiers: Integer;
    VirtKey: Integer;
  end;

const ID = $FF;

type
  TForm1 = class(TForm)
  ...
  private
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
  end;

...

procedure TForm1.WMHotKey(var Msg: TWMHotkey);
begin
  case Msg.IdHotKey of
    ID: caption:='alles klar';
    ID+1: caption:='es ist immer noch alles klar';
    // Abhängig von der ID wird entschieden, was getan werden soll.
  end;
  inherited;
end;

...
procedure TForm1.FormCreate(Sender: TObject);
var ok: longbool;
begin
  ok:=RegisterHotKey(Form1.Handle, ID, MOD_Alt, Ord('Q'));
  (*
    Weitere Möglichkeiten sind Mod_control und mod_shift.
  *)

  if not ok then ... // Irgendwas war wohl nicht in Ordnung.

  ok:=RegisterHotKey(Form1.Handle, ID+1, MOD_control, vk_f1);
  ...
end;