Thema: Delphi Problem mit Hotkey

Einzelnen Beitrag anzeigen

100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#1

Problem mit Hotkey

  Alt 20. Aug 2005, 10:42
hallo zusammen,

ich wusste nicht in welche sparte dieses thema gehört, drum hab ichs einfach mal ins "Sonstige Fragen zu Delphi" gepostet. bitte verschieben wenns am falschen ort ist...

nun zu meinem problem:
ich habe einen laptop mit multimedia-tasten, die ich ansprechen will. nun hatte ich keine ahnung wie die tasten "heissen" um sie ansprechen zu können. dann habe ich folgendes gemacht:
Delphi-Quellcode:
procedure TForm7.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
showmessage(chr(key));
end;
das resultat:
play/pause-taste: ³
zurück-taste: ±
weiter-taste: °
stop-taste: ²

so konnte ich sie dann abfangen:
Delphi-Quellcode:
procedure TForm7.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if chr(key) = '³then machedas;
  if chr(key) = '±then machedieses;
  // usw...
end;
funktionierte wunderbar.
jetzt will ich aber die tasten auch abfangen, wenn mein programm nicht im focus ist(schreibt man das so? ), also ein hotkey. ich hab da auch ein code-beispiel gefunden:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations } 
      HotKeyID: Integer;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
  public
    { Public declarations } 
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} 

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = HotKeyID then
    ShowMessage('Ctrl + Alt + P wurde gedrückt !');
end;

procedure TForm1.FormCreate(Sender: TObject);
const
  VK_P = $50;
begin
  HotKeyID := GlobalAddAtom(PChar(Application.Exename + '_Hotkey1'));
  RegisterHotKey(Handle, HotKeyID, MOD_CONTROL + MOD_ALT, VK_P); // hier ist das problem
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(Handle, HotKeyID);
  GlobalDeleteAtom(HotKeyID);
end;
mit Ctrl + Alt + P funktionierte es auch. nun zu meiner frage:
was muss ich bei RegisterHotKey(Handle, HotKeyID, MOD_CONTROL + MOD_ALT, VK_P); schreiben, um die multimedia-tasten abzufangen??

vielen dank schon mal im voraus.

gruss
urbanbruhin
  Mit Zitat antworten Zitat