AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mal wieder Multimedia-Tasten...
Thema durchsuchen
Ansicht
Themen-Optionen

Mal wieder Multimedia-Tasten...

Ein Thema von 64Jabor · begonnen am 5. Apr 2008 · letzter Beitrag vom 18. Sep 2009
Antwort Antwort
64Jabor

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

Mal wieder Multimedia-Tasten...

  Alt 5. Apr 2008, 15: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
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Mal wieder Multimedia-Tasten...

  Alt 17. Sep 2009, 13:17
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
Tom
Just DO it
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Mal wieder Multimedia-Tasten...

  Alt 18. Sep 2009, 08:29
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
Tom
Just DO it
  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 07:35 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