Entwickler-Ecke

Windows API - Hotkey / MediaKey senden simulieren


Olex - Mi 19.12.07 11:25
Titel: Hotkey / MediaKey senden simulieren
Hi ihr kennt doch alle diese tastaturen mit den zusätzlichen tasten
z.B. Play Stop usw um zB den media player zu steuern.

Gibt es denn eine möglichkeit das zu similieren durch ein Delphi Prog?

gruß Olex


Gausi - Mi 19.12.07 12:13

Sende an das Fenster eine WM_APPCOMMAND Message. Im lParam kannst du den Typ der Taste angeben. Dabei sind z.B. folgende Konstanten definiert:

Delphi-Quelltext
1:
2:
3:
4:
APPCOMMAND_MEDIA_NEXTTRACK      = $0B000;
APPCOMMAND_MEDIA_PREVIOUSTRACK  = $0C000;
APPCOMMAND_MEDIA_STOP           = $0D000;
APPCOMMAND_MEDIA_PLAY_PAUSE     = $0E000;


Olex - Mi 19.12.07 12:55

muss ich mit xspy erst das fenster suchen und dann die message?

wenn ja dann muss ich ja das für alle player machen die es gibt, damit alle unstertützt werden oder?


Gausi - Mi 19.12.07 14:35

Du könntest auch mit HWND_BROADCAST die Message einfach an alle Fenster senden. Ob das unbedingt Sinn macht, weiß ich nicht.

Eine 100%ige Simulation der Tasten wird man mit Delphi kaum hinkriegen, dafür müsste man wohl auf Treiberebene runter. Ein Grund dafür sind die Programme, die bei diesen Dingern teilweise mit installiert werden (z.B. iTouch bei Logitech). Bei mir bewirkt ein Druck auf die Play/Pause Taste z.B., dass ein Medienplayer, der grade läuft auf Play/Pause geht. Wenn kein Player läuft, wird der Standard-Player gestartet. Dieses Verhalten bekommt man mit den Messages alleine nicht hin. D.h. wenn dein Programm diese Messages im System verschickt, bekommt das Treiberprogramm oder was das auch immer ist nichts davon mit.
Der Windows-Media-Player spielt irgendwie auch noch ne Sonderrolle, aber da blicke ich nicht ganz durch.