Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mal wieder Multimedia-Tasten... (https://www.delphipraxis.net/111564-mal-wieder-multimedia-tasten.html)

64Jabor 5. Apr 2008 14:38


Mal wieder Multimedia-Tasten...
 
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

Cylence 17. Sep 2009 12:17

Re: Mal wieder Multimedia-Tasten...
 
Hi,

ich hab da letztens was sehr gutes gefunden zum Thema Hooks, das ich selbst jetzt auch verwende:

http://www.bome.com/delphi/watch/

die dll mit DelphiDemo, kann Tastatur, Maus und Shell/Window Aktionen abfangen. Damit ist das alles denke ich machbar. Ich selbst werde mal testen ob ich damit auch die Logitech Media Tasten abfangen kann.

Gruß

tom

Cylence 18. Sep 2009 07:29

Re: Mal wieder Multimedia-Tasten...
 
Hi,

ich habs gestern mit Logitech und mit einer Cherry Tastatur versucht:

klappt :-)

Delphi-Quellcode:
  //Cherry Media Tasten
    if Watch1.getVKString(wParam)+' ,'+IntToHex(lParam,8) = 'undefined 0x00B1 ,01000001'
      then PrevClick;//Prev Title
    if Watch1.getVKString(wParam)+' ,'+IntToHex(lParam,8) = 'undefined 0x00B3 ,01000001'
      then PlayClick;//PLAY
    if Watch1.getVKString(wParam)+' ,'+IntToHex(lParam,8) = 'undefined 0x00B0 ,01000001'
      then NextClick;//Next Title
  end;
  //Logitech MediaTasten
    if Watch1.getVKString(wParam)+' ,'+IntToHex(lParam,8) = 'undefined 0x00B1 ,00000001'
      then PrevClick;//Prev Title
    if Watch1.getVKString(wParam)+' ,'+IntToHex(lParam,8) = 'undefined 0x00B3 ,00000001'
      then PlayClick;//PLAY
    if Watch1.getVKString(wParam)+' ,'+IntToHex(lParam,8) = 'undefined 0x00B0 ,00000001'
      then NextClick;//Next Title
die gehen beide. Vielleicht kann damit jemand was anfangen.

Gruß

tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 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