| Autor |
Beitrag |
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 23.02.06 16:42
Ich befürchte zwar, dass sich das wieder nicht lösen lässt, aber ich probiers mal. Es geht immer noch um die MultimediaTasten (MMKeys) und meinen Hook, der nicht funktioniert, wenn iTouch im Hintergrund läuft. Ich habe jetzt die Doku auf MSDN zu ShellHooks nochmal gelesen, und komme langsam aber sicher zu dem Schluss, dass mein Hook richtig ist, und das Fehlverhalten daran liegt, wie iTouch mit dem Event "Multimedia-Taste gedrückt" umgeht und Windows darüber in Kenntnis setzt.
Ich versuche nun automatisch herauszufinden, wie das aktuelle System auf MMKeys reagiert, und ob ich meinen Hook installieren kann/muss, oder ob ich das lieber bleiben lasse.
Dafür brauche ich einen Druck auf eine dieser Tasten. Wie kann ich das realisieren?
Delphi-Quelltext 1:
| SendMessage(GetDesktopWindow,WM_APPCOMMAND,GetDesktopWindow,APPCOMMAND_MEDIA_PLAY_PAUSE); | scheidet aus - die Nachricht läuft an iTouch vorbei. Ebenso liefert das: Delphi-Quelltext 1: 2: 3:
| Const VK_MEDIA_PLAY_PAUSE = $B3; keybd_event(VK_MEDIA_PLAY_PAUSE, 0, 0, 0); | nicht dasselbe Ergebnis wie ein "echter" Druck auf den Button. Ich befürchte, dass ich mit der Simulation auf Treiberebene runter muss. Ist das möglich? 
_________________ We are, we were and will not be.
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Do 23.02.06 16:52
Logitech schweigt sich darüber aus? Ich mein, du hast vor, ihr Produkt zu unterstützen! Vllcht antworten sie auf ne E-Mail...
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Gausi 
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 23.02.06 17:04
Es ist nicht so, dass ich das Produkt unterstützen möchte - ich möchte eine Alternative anbieten
iTouch kann man auch installieren, wenn man keine Logitech-Tastatur hat. Installiert man es, brauche ich meinen Hook nicht zu installieren.
Ist es nicht installiert, sorgt mein dann installierter Hook dafür, dass die MMkeys bei meiner Anwendung ankommen, wenn das Fenster grad nicht aktiv ist.
Nur wenn beides läuft, bekomme ich Probleme - die Antwort von Logitech dürfte also schon vorher klar sein:
| Logitech wird wahrscheinlich folgendes schreiben: | Sehr geehrter Herr Gausi,
Lassen Sie doch den Unfug mit ihrem diletantischen Hook-Versuchen und empfehlen sie den Anwendern ihrer Software stattdessen, iTouch zu installieren.
Mit freundlichen Grüßen... |
_________________ We are, we were and will not be.
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Do 23.02.06 17:07
Und wenn du überprüfst, ob iTouch instaliert ist (Registry z.B.)? Irgendwa wird itouch ja hinterlassen und danach kannst du suchen.
Auf dieselbe Weise sucht auch Sims 2 nach CloneCD und so weiter.
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Gausi 
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 23.02.06 17:17
Auch das habe ich mir überlegt, und nach einigen Stunden wieder verworfen. Natürlich könnte ich in der Prozessliste nach "iTouch.exe" suchen (ich bin sicher, man findet hier im Forum was dazu, wie man die Prozesse auflistet...). In der neuen Version von Nemp werde ich das wahrscheinlich auch einbauen (um vielen Usern die manuelle Konfiguration zu ersparen), aber:
Wer garantiert mir, dass es nicht andere Treiber-ähnliche Programme gibt, die eine ähnliche Wirkung erzielen? Die Methode, danach zu suchen und darauf die Entscheidung zu fällen, darf also nicht die einzige sein. Denn sonst könnte es passieren, dass ein Druck auf "nächster Titel" nicht nur einen, sondern 30 Titel weiterspringt.
Ja, man könnte auch einen Timer einbauen, der bei Empfang eines MMKeys den weiteren Empfang für - sagen wir mal - 100 Millisekunden blockiert, aber das finde ich auch nicht besonders schön...
Ich bin halt zur Zeit am abwägen und die Möglichkeiten am ausloten 
_________________ We are, we were and will not be.
|
|
|