Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Hotkey (https://www.delphipraxis.net/51845-problem-mit-hotkey.html)

100nF 20. Aug 2005 11:42


Problem mit Hotkey
 
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? :gruebel: ), 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
Delphi-Quellcode:
RegisterHotKey(Handle, HotKeyID, MOD_CONTROL + MOD_ALT, VK_P);
schreiben, um die multimedia-tasten abzufangen??

vielen dank schon mal im voraus.

gruss
urbanbruhin

Zacherl 20. Aug 2005 11:46

Re: Problem mit Hotkey
 
Hallo,
du musst erst mal die VK Codes der Tasten herusbekommen und die dan anstelle von z.B. VK_P verwenden. Dazu musst du nur CHR durch INTTOSTR ersetzen. Du wirst zwar keine VK Codes bekommen aber die synonymen Zahlen z.B. VK_RETURN = 13.

Florian

100nF 20. Aug 2005 12:06

Re: Problem mit Hotkey
 
hallo Florian Bernd,

vielen dank, es funktioniert wunderbar!! :bounce1:

gruss
urbanbruhin


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz