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