Mit einem Hook funktioniert es definitiv nicht!
Hab es mal mit der Klasse JvAppCommand aus den JVCL probiert, auch hier klappt der Hook nicht.
Es scheint so, dass die "Microsoft IntelliPoint"-Software hier ihr eigenes Süppchen kocht...
Läuft weder WMP noch PowerDVD, so wird über die Play/Pause-Taste selbst bei installiertem Hook der WMP gestartet!
Wenn WMP oder PowerDVD läuft, so erhalten diese stets die Nachrichten der Tasten,
sogar wenn diese minimiert sind!
Irgendwie müsste ich doch sowas dann auch hinkriegen? Ich vermute ja immernoch, dass die IntelliPoint-Software eine Art Liste von Multimediaprogrammen hat, an die diese Tasten gesendet werden, wenn sonst kein Programm vorher die Tasten verarbeitet hat. Und da hilft wohl kein Hook...
Oder es ist vielleicht so, dass diese Programme (WMP/PowerDVD) sich beim Start bei der IntelliPoint-Software "registrieren", damit die Software nun weiß, dass ein solches Programm läuft, dem es die Tasten sendet...
Ein Idiz dafür habe ich in der Dokumentation über
FindWindow() gefunden:
Zitat:
To check if the Microsoft IntelliType version 1.x software is running, call
FindWindow as follows:
Code:
FindWindow("MSITPro::EventQueue",NULL);
To check if the IntelliType version 2.0 software is running, call
FindWindow as follows:
Code:
FindWindow("Type32_Main_Window", NULL);
If the IntelliType software is running, it sends
WM_APPCOMMAND messages to the application. Otherwise the application must install a hook to receive
WM_APPCOMMAND messages.
Wie versteht ihr diese Aussage?
Man ruft
FindWindow mit den entsprechenden Parametern auf, dann hat man sich bei der Software "registriert" und erhält die Tasten von WM_APPCOMMAND auch ohne Hook (der ja nicht funktioniert)?
...klingt unlogisch, aber so habe ich diese Aussage verstanden?!?
Was meint ihr?
[Edit]
Ist wohl eher so zu verstehen: Wenn die IntelliPoint-Software läuft, dann verschickt sie WM_APPCOMMAND Nachrichten. Wenn sie
nicht läuft, muss man einen Hook installieren, um die Nachrichten zu empfangen.
Mit anderen Worten: Wenn sie läuft, funktioniert
kein Hook, sondern nur das normale Empfangen der Nachrichten.
So kann ich es ja auch bestätigen: Ein Hook funktiniert nicht bei laufender IntelliPoint-Software!
[/Edit]
Allerdings ist der Artikel wohl schon etwas älter und inzwischen heißt die Software "Microsoft IntelliPoint" Version 6.2.
Mit den oben genannten
FindWindow-Aufrufen habe ich auch immer 0 zurückbekommen...
Kennt jemand den
FindWindow-Aufruf für die aktuelle Version dieser Software?