AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Hotkey

Ein Thema von 100nF · begonnen am 20. Aug 2005 · letzter Beitrag vom 20. Aug 2005
Antwort Antwort
100nF

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

Problem mit Hotkey

  Alt 20. Aug 2005, 11: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
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Problem mit Hotkey

  Alt 20. Aug 2005, 11:46
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
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
100nF

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

Re: Problem mit Hotkey

  Alt 20. Aug 2005, 12:06
hallo Florian Bernd,

vielen dank, es funktioniert wunderbar!!

gruss
urbanbruhin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz