Einzelnen Beitrag anzeigen

64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#1

Mal wieder Multimedia-Tasten...

  Alt 5. Apr 2008, 14:38
Hallo Leute,

ich weiß es ist in der Sparte uU schon ein ausgelutschtes Thema, aber ich will es nochmal aufgreifen, denn keiner der bereit gelesenen Beiträge hat zu meinem erhofften Triumph geführt xD

Mein Ziel ist ein ganz simpler MediaPlayer, der schneller sein sollte als der WMP, VLC etc.
Das ist mir gelungen - inklusive PlayLists im .ini-Format, Sound-Regler und Statusanzeige (Lied-Fortschritt)!
Kommen wir aber zum wichtigeren Teil - den Multimedia-Tasten...

Ich habe mal eine hier zusammengesuchte Liste aus den wichtigsten "Multimedia-Tasten-Konstanten" erstelt:
Delphi-Quellcode:
 APPCOMMAND_MEDIA_NEXTTRACK = $B0000;
 APPCOMMAND_MEDIA_PREVIOUSTRACK = $C0000;
 APPCOMMAND_MEDIA_STOP = $D0000;
 APPCOMMAND_MEDIA_PLAY_PAUSE = $E0000;
 APPCOMMAND_VOLUME_MUTE = $80000;
 APPCOMMAND_VOLUME_DOWN = $90000;
 APPCOMMAND_VOLUME_UP = $a0000;
Ich denke das ist das nötigste!
Mit einem Abfang der WM_APPCOMMAND Message funktioniert das auch sehr gut, special thanks an der Stelle an Gausi und Robert! Leider klappt das alles nicht mehr, wenn mein Programm den Fokus verliert -.-
Nun ist es jedoch nötig, dass mein Programm, welches man in den Systemtray minimieren kann, auch im Hintergrund beim Zocken auf die Multimedia-Tasten (ich nenne es ABSICHTLICH nich Tasten, belehrt von Robert & Co.) reagiert. Auch habe ich verstanden, dass man nun einen Hook basteln muss, der noch vor Programmen (zB von Logitech: iTouch etc.) die WM_APPCOMMAND abfängt und an mein eigenes Programm weiterleitet - man beachte jedoch Probleme wegen Wiederholungen der WM_APPCOMMAND-Sendung.

DAS ist auch der Teil der mit Kopfzerbrechen bereitet...
Kann man sein Programm nicht einfach unsichtbar per Form-Eigenschaft in den Fokus rücken, oder bedeutet das eine Minimierung anderer Anwendungen? Ich meine, wenn man wirklich Hooken muss, wäre es dann nicht günstiger Befehle wie "Play" per Paramter einer zweiten Instanz des Programms zu senden, welches dann per Pipeline an die erste Instanz die jeweilige Aktion sendet und sich danach wieder schließt?

Hoffe ihr könnt mir helfen...hab vom Hooken keinerlei (!!!) Ahnung *gg

mfg 64Jabor
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat