Jump to content

DVBViewer soll APPCOMMANDS können


craig_s

Recommended Posts

EDIT vorneweg:

aufgrund dieses Beitrages ist erwin's MultimediaKeys Plugin entstanden, Download *hier*.

 

Hintergrund, Funktion:

Fast jedes heutzutage verkaufte Keyboard, Maus oder Fernbedienung hat (Sonder)Tasten die APPCOMMAND oder VK senden. Diese MultiMedia-Befehle funktionieren im PC sehr universell bzw. werden u.a. von vielen Playern schon automatisch verstanden (wie WMP, PDVD, TMT, MPC-HC, VLC, Winamp usw.).

 

Wären die MultiMedia Tasten-Funktionen nun auch in DVBV integriert könnte jeder, auch wer gerade keine Lust hat sich mit der unglaublich komplexen Welt von EventGhost oder Fernbedienungs-Plugins herumzuschlagen sofort die Sondertasten seines Keyboards oder Maus in DVBV einlernen und nutzen.

 

Oder bei einer Fernbedienung (die bei vielen Notebooks und PC's schon dabei ist) die Transporttasten (Play, Pause, Fwd, Rwd usw.), auch Record, CH +/-, Back, More, Vol +/-, Mute u.a.

Das "MultimediaKeys Plugin" erweitert nun DVBViewer um diese Befehle.

 

 

 

Also hier fängt jetzt der Beitrag an:

 

Habe auf einem Acer Notebook mit der mitgelieferten Fernbedienung (ähnlich der MCE) probiert, leider lösen ausgerechnet die wichtigen Tasten:

 

REC, PLAY, PAUSE, Stop, RWD, FWD, Skip BACK/FWD

CH +, CH -, DVD MENU, TELETEXT und die Farbtasten rot , grün, gelb, blau...

 

keine Tastaturevents aus, sind somit nicht in DVBViewer einlernbar.

 

Aber im Win.Media Player, Arcade Deluxe, TMT und mehr funkt alles auf Anhieb (!), und sogar in MPC-HC kann es eingestellt werden. Letzterer hat mich dann auch auf die richtige Spur gebracht - hier verschickt die (nicht konfigurierbare) Software der Fernbedienung APPCOMMANDS, die MS mit XP für Win.Media Player eingeführt hat (application command event) und die heute fast jeder Player versteht, nur DVBViewer nicht.

 

Auch viele kauf-Fernbedienungen können Appcommands senden und auch Girder.

 

Leider bin ich kein Skriptexperte sonst wär ich schon fertig.. ;) So schwer scheint die Sprache nicht zu sein, die Liste der WM_APPCOMMAND Message's ist hier klick.

 

Für DVBViewer, der ja beim DVD abspielen auch schnellen Vor- und Rücklauf kann (gibt's keine einstellbare Taste dafür in "Eingaben"??) wären folgende Appcommands von Interesse, mit denen DVBViewer dann viele Fernbedienungen, und nicht nur die mit einem PC mitgeliefert werden auf Anhieb verstehen würde:

 

APPCOMMAND_MEDIA_CHANNEL_UP

APPCOMMAND_MEDIA_CHANNEL_DOWN

APPCOMMAND_MEDIA_RECORD

APPCOMMAND_MEDIA_FASTFORWARD

APPCOMMAND_MEDIA_REWIND

APPCOMMAND_MEDIA_SELECT

APPCOMMAND_MEDIA_STOP

APPCOMMAND_MEDIA_PAUSE

APPCOMMAND_MEDIA_PLAY

APPCOMMAND_MEDIA_PLAY_PAUSE

APPCOMMAND_MEDIA_NEXTTRACK

APPCOMMAND_MEDIA_PREVIOUSTRACK

APPCOMMAND_VOLUME_DOWN

APPCOMMAND_VOLUME_UP

APPCOMMAND_VOLUME_MUTE

...

 

In MPC in <Options - Keys> oben zum Abschnitt "App Commands" kann man für alle MPC Funktionen viele AppEvents einstellen. So ähnlich für DVBViewer?

 

Ich finde das würde doch auf jeden Fall DVBViewer ein ganzes Stück nach vorne bringen und den teuren Girder überflüssig machen, dessen DVBV Plugin auch nachgebessert werden muss.

 

Als nächstes komm der Beitrag "PS3 Bluetooth Fernbedienung für PC und DVBV", Link später hier. - Edit: also hier.

Edited by craig_s
Link to comment
  • Replies 113
  • Created
  • Last Reply

Top Posters In This Topic

  • craig_s

    46

  • erwin

    37

  • Griga

    9

  • SnoopyDog

    5

Anstatt Grider kann ja z.B. auch Eventghost verwendet werden.

Da wird noch aktiv entwickelt und das DVBV-Plugin funktioniert einwandfrei!

Die Kommunikation via COM scheint mir die sichere Variante zu sein.

 

P.S. Die PS3 Fernbedienung läuft auch mit EG!

Link to comment
Was ist mit den Farbtasten und Teletext? Weißt du oder kannst du herausfinden, welche Kommandos ihnen zugeordnet sind?

In den Listen die ich bis jetzt gesehen habe war von Farbtasten nichts zu sehen. Aber ich und glaub auch viele andere wären schon froh wenn nur PLAY_PAUSE, CHANNEL_UP, CHANNEL_DOWN und meinetwegen noch RECORD gehen würden. Alle anderen Transportfunktionen kann ich durch einige Tricks auf Virtual-Key legen, das versteht DVBV ja.

Ein Skript, das diese 4 AppEvents auf ungenutzte Virtual-Key's legt und wir wären ein ganzes Stück weiter.

 

 

Alter hut und so einfach ist das nicht. Die app commands kriegt nur die applikation mit fokus.

Deswegen kommen einige Sachen bei mir per VK (war schon von Anfang an so, hier genaueres):

VOLUME_DOWN 174, VOLUME_UP 175, VOLUME_MUTE 173 und einige andere gehen immer (sehe ich an einer Einblendung), sind halt Tasten.

 

 

Eventghost sieht interessant aus. Weiß nicht wies bei dem ist aber ich mag keine, die Windows Treiber aushebeln, patchen oder ersetzen. Deswegen jetzt neuer Lösungsansatz mit PS3 Bluetooth FB. Da bringt Vista/7 die Treiber schon mit. Und dann brauchts nur noch ein kleines Programmerl...

Edited by craig_s
Link to comment

Und von wegen alter Hut, der neue Hut ist, daß erst die Player-softs bei Appcommand eingestiegen sind und jetzt könnens immer mehr Fernbedienungs-softs bzw. beschränken sich sogar darauf. Es geht also darum DVBViewer mit einen schon lange währenden Trend zu synchronisieren - leichter bedienbarer zu machen.

Link to comment

Ich hatte spontan an den TSPlayer gedacht, dem man auf diese Weise ohne viel Aufwand FB-Unterstützung verpassen könnte. Er wäre eventuell ein geeignetes Testobjekt (vorausgesetzt, es gibt einen Tester, der so eine FB hat und mitmacht). Der TSPlayer braucht auch keine Farbtasten.

 

Wie sieht das mit Auto-Repeat bei APPCOMMAND aus? Ist das für bestimmte Funktionen vorgesehen oder konfigurierbar?

Link to comment
Und von wegen alter Hut,

Da muss ich dich enttäuschen. Der kram ist seit jahren bekannt (MCE Remote). Das ist sturzalt und leider nicht besonders sinnvoll von MS gestaltet. Aber Du hast damit scheinbar erfahrung als ich drinne? ;)

Link to comment
Da muss ich dich enttäuschen. Der kram ist seit jahren bekannt (MCE Remote). Das ist sturzalt...

Ich sag doch garnichts anderes, genau, Appcommands ist ja praktisch für die MCE Remote erfunden worden. Seit XP SP1. Aber zB. erst TMT3 konnte sich entschließen das richtig funktionierend und umfangreicher einzubauen und gab aber 2008 schon inoffiziell Anleitungen, das in ältere remote cfg's einzubauen, hier. PDVD9, WinDVD, Winamp können's mit den wesentlichen Funktionen auch. Tendenz steigend.

 

Ich hatte spontan an den TSPlayer gedacht, dem man auf diese Weise ohne viel Aufwand FB-Unterstützung verpassen könnte. Er wäre eventuell ein geeignetes Testobjekt (vorausgesetzt, es gibt einen Tester, der so eine FB hat und mitmacht). Der TSPlayer braucht auch keine Farbtasten.

Würde mich als Versuchskaninchen zur Verfügung stellen, wird sich aber erst noch rausstellen ob ich qualifiziert genug bin ;)

 

Wie sieht das mit Auto-Repeat bei APPCOMMAND aus? Ist das für bestimmte Funktionen vorgesehen oder konfigurierbar?

Vorhanden: meine Remote bilinkelt eigentlich bei allen Appcommand-Tasten, Volume steigt gleichmäßig von 0 auf 100 in ca 5sec, das wäre natürlich fatal bei Start/Stop, aber da wird nur die erste Funktion aktiviert, auch wenn man den Finger permanent draufhält.

 

 

Die app commands kriegt nur die applikation mit fokus

Hmm, egal ob ich VOLUME_DOWN, VOLUME_UP, VOLUME_MUTE als AppEvent oder Virtual-Key sende, die Systemlautstärke hört jedenfalls immer mit.

 

Beispiel:

im DVBV liegt VOLUME_UP / _DOWN auf VK 175 / 174. Die spreche ich mit der PS3 Fernbedienung an (näheres dazu hier) und man hört und sieht schön, wie der Regler im DVBV hoch und runter geht.

Gleich danach, DVBV hat immer noch Focus, drücke ich auf der Acer Remote Vol + und - als AppEvent. Jetzt geht die Systemlautstärke gesteuert über den Realtek Audio Manager hoch und runter (mit Einblendung). Beim DVBV bleibt der Regler unbewegt, weil er den Appcommand nicht hört.

 

Wenn ich neben DVBV auch das Audio Manager Fenster offen habe sieht man genaueres:

Focus auf DVBV und Vol Regelung über VK 175/174: Beide Vol-Regler bewegen sich. Realtek hört mit und versteht auch VK.

Focus auf Realtek und Vol Regelung über VK 175/174: Nur der Realtek-Regler bewegt sich.

DVBV braucht also Focus mit VK, Realtek nicht.

 

Wollte ich beide komplett trennen müsste ich nur beim DVBV Vol/Mute auf andere Tasten legen als die *allgemeinverständlichen* VK 175/174/173.

 

Anders bei Win Media Player und Arcade Deluxe , hier sind die Vol Regler 100% zum Realtek gekoppelt, VK oder Appcommand oder Focus egal. Das kann man also einstellen.

 

Nächster Versuch: WMP spielt ein Video und ist in die Taskleiste minimiert. Oben sind einige Texte, Explorer, Firefox und vorne ist DVBViewer mit Pro7. Jetzt APPCOMMAND_MEDIA_FASTFORWARD geschickt und der minimierte MediaPlayer spult vorwärts..

 

Übrigens, Acer Arcade Deluxe ist von Cyberlink und arbeitet mit dessen *frei* verfügbaren und DXVA-Aktiven Video Decodern! Das hätt ich jetzt nicht sagen sollen, ob das so bleibt...

Edited by craig_s
Link to comment

Hi Jungs,

ich denke ich kann zu dem Thema auch etwas beitragen.

Also ich habe mir irgendwann mal so eine Präsentations-Maus von Microsoft gekauft. Diese bietet neben den normalen Mausfunktionen noch folgende Tasten: Vor-/Zurück, Lautstärke +/-, und Play/Pause.

Super, dass die Tasten zum Präsentieren nur mit PowerPoint klappen, ich verwende leider OpenOffice oder Latex (also PDFs mit Acrobat Reader).

Und da gingen die Tasten zum Präsentieren nicht.

Also hatte ich mir mal schnell was gebastelt...

Die Präsentations-Maus erzeugt die entsprechenden APPCOMMAND-Befehle, habe auch mal den Source zu meinem Testprogramm angehängt (Delphi).

Vllt. könnt ihr damit was anfangen ;)

 

PresenterKeys.zip

 

Übrigens funktioniert das ganze auch, wenn das Fenster NICHT den Focus hat, allerdings mit einigen Einschränkungen:

- Wenn das Fenster den Focus hat, werden die Befehle in jedem Fall empfangen

- Wenn das Fenster durch ein anderes Fenster überdeckt wird, empfängt es auch die Befehle, sofern sie nicht durch ein überdeckendes Fenster gefangen werden (z.B. Windows Media Player)

- Wenn das Fenster minimiert wird, werden gar keine Befehle mehr empfangen

 

Bei den Lautstärketasten ist das Problem, dass Windows die immer abfängt (und damit die Systemlautstärke regelt), AUSSER wenn das Fenster im Vordergrund ist (dann werden die Lautstärketasten immer gefangen und nicht an die Systemlautstärke weitergeleitet). Sobald es jedoch durch ein anderes Fenster verdeckt wird, wird damit die Systemlautstärke geregelt und das eigene Fenster bekommt die Befehle nicht mehr.

Die Vor/Zurück Tasten werden systemmäßig nicht durch Windows gefangen, und somit auch an das eigene Fenster weitergeleitet wenn es nicht im Fokus ist (außer es ist halt der WMP o.ä. vornedran, welches die Tasten abfängt).

Wie gesagt, wenn das Fenster minimiert ist kommen gar keine Befehle mehr an, selbst wenn sie durch kein anderes Fenster gefangen werden.

Link to comment

Also, ein kleines Pluginchen ähnlich dem MCE2005 zu schreiben, ist nicht das Ding. APPCOMMAND ist allerdings wirklich schon uralt. Wäre halt ein Schnellschuß für Fernbedienungen, solange nichts besseres geht. Aber die hardwarenahe Ebene ist immer bessser. Bei MCE2005 kannst Du z.B. den "Power" Button der FB nicht auf dem "offiziellen" Weg abfangen, der geht immer MS-hardcoded auf den Netzschalter des PC. Ich war ja schon froh, daß ich für die "Windows" Taste auf der MCE2005 einen Workaround finden konnte, denn diese Taste wollte MS eigentlich auch verbergen. Das Problem bei MS ist leider eine ziemlich unflexible Denkweise an manchen Stellen.

Link to comment
Alter hut und so einfach ist das nicht. Die app commands kriegt nur die applikation mit fokus.

Wie ich letzte Nacht erfahren habe, überlegt Lars, im nächsten DVBViewer Pro-Release die Bedienung über die Tastatur komplett zu eliminieren, weil diese Kommandos erst recht nur das fokussierte Fenster erreichen, und außerdem ist es ein noch viel älterer Hut... ;)

 

Scherz beiseite: Ich denke, es ist sinnvoll, eine Erfassung der AppCommands zu probieren. Und zwar nicht in Form einer expliziten FB-Unterstützung, sondern schlicht als zusätzliche Tasten. Ich stelle es mir erst mal ganz naiv im DVBViewer GE so vor, dass die AppCommands gleich beim Eintreffen in Pseudo-Keycodes übersetzt werden, und der Rest geht dann seinen gewohnten Gang, einschließlich der Zuweisung von Actions zu Tasten in den Optionen. Wenn ich das richtig verstanden habe, handelt es sich ja nicht nur um FBs, sondern auch um Sondertasten von Multimedia-Keyboards, Mäusen usw., und die Integration scheint relativ leicht zu sein.

 

Lassen wir es also auf einen ersten Versuch mit dem TSPlayer ankommen. @craig_s: Bitte eine PM mit deiner Mailadresse...

Link to comment

Auf einigen Geräten kommen die Multimediatasten sogar doppelt rein: als "WM_INPUT" und als "WM_APPCOMMAND" (so z.B. bei meinem Notebook). Sollte aber nicht schlimm sein, denn in der "Learn" Funktion des DVBViewer kann man überflüssige Dinge gleich wieder löschen.

Link to comment
Auf einigen Geräten kommen die Multimediatasten sogar doppelt rein: als "WM_INPUT" und als "WM_APPCOMMAND" (so z.B. bei meinem Notebook). Sollte aber nicht schlimm sein, denn in der "Learn" Funktion des DVBViewer kann man überflüssige Dinge gleich wieder löschen.

Moment mal, jetzt gehts aber in die falsche Richtung, DVBViewer kann KEIN KLEINES BISSCHEN APPCOMMAND. Auf dem Ohr ist er taub, obwohl alle andern zuhören. Das ist immerhin das Thema dieses Threads. Er hört nur Virtual-Key, das ist was ganz anderes.

 

 

Wie ich letzte Nacht erfahren habe, überlegt Lars, im nächsten DVBViewer Pro-Release die Bedienung über die Tastatur komplett zu eliminieren, weil diese Kommandos erst recht nur das fokussierte Fenster erreichen

Huch, wie jetzt? Wie wird dann fernbedient ohne Tasten?

Link to comment
Huch, wie jetzt? Wie wird dann fernbedient ohne Tasten?

Bei deinem Zitat hast du das entscheidende danach abgeschnitten ;)

Scherz beiseite:

 

Und SnoopyDog bezieht sich auf eine mögliche zukünftige Integration in den DVBViewer.

Link to comment
Moment mal, jetzt gehts aber in die falsche Richtung, DVBViewer kann KEIN KLEINES BISSCHEN APPCOMMAND.

Hab ich auch nicht geschrieben, aber da ich schon mal ein Plugin in dieser Kategorie entwickelt hab, war mir das noch present. :P

 

Und SnoopyDog bezieht sich auf eine mögliche zukünftige Integration in den DVBViewer.

Genau ;)

Link to comment

Ach soo, Griga macht Spässe, huch so kenn ich ihn garnicht ;)

 

"mögliche zukünftige Integration" ist mir dann zu spät auch eingefallen. Fehlte halt etwas Zukunftsformel in SnoopyDog's Satz.

 

Sorry an alle, werde demnächst besser aufpassen.

Link to comment
Ich stelle es mir erst mal ganz naiv im DVBViewer GE so vor, dass die AppCommands gleich beim Eintreffen in Pseudo-Keycodes übersetzt werden, und der Rest geht dann seinen gewohnten Gang, einschließlich der Zuweisung von Actions zu Tasten in den Optionen. Wenn ich das richtig verstanden habe, handelt es sich ja nicht nur um FBs, sondern auch um Sondertasten von Multimedia-Keyboards, Mäusen usw., und die Integration scheint relativ leicht zu sein.

 

Lassen wir es also auf einen ersten Versuch mit dem TSPlayer ankommen. @craig_s: Bitte eine PM mit deiner Mailadresse...

Meine naive Vorstellung: Kleine App (shell hook) die die AppCommands auffängt (Vordergrundproblem) + Inputplugin. Vorteil wäre 1. DVBV bleibt erstmal unberührt. 2. Die DVBV-Entwickler könnten von dieser Aufgabe entlastet werden, denn Inputplugins schreiben können hier einige. 3. der "gewohnte Gang" bleibt erhalten.

 

erwin

Edited by erwin
Link to comment

Hab mal schnell den Shell-Hook aufgesetzt. Und ein Gerüst für ein Inputplugin hab ich hier auch noch rumliegen.

 

OK meld mich freiwillig!

 

erwin

Link to comment

Den Shellhook kannst Du auch ins Plugin packen, da brauchst Du keine app, sondern nur eine ThreadID :( . Hab ich bei meinem MCE2005 Plugin auch so gemacht.

 

OrgShellHook := SetWindowsHookEx(WH_SHELL,ShellProc,0,GetCurrentThreadId);

 

Aber nicht vergessen: JEDEN Handle beim Beenden des DVBViewer freigeben, sonst bekommst Du spätestens bei der Beta beim Beenden lustige Exceptions um die Ohren.

Edited by SnoopyDog
Link to comment
Den Shellhook kannst Du auch ins Plugin packen, da brauchst Du keine app, sondern nur eine ThreadID :( . Hab ich bei meinem MCE2005 Plugin auch so gemacht.

Ich weiss, ich weiss.

 

Trotzdem Danke

Link to comment
Eventghost sieht interessant aus. Weiß nicht wies bei dem ist aber ich mag keine, die Windows Treiber aushebeln, patchen oder ersetzen. Deswegen jetzt neuer Lösungsansatz mit PS3 Bluetooth FB. Da bringt Vista/7 die Treiber schon mit. Und dann brauchts nur noch ein kleines Programmerl...

 

Nein, der Eventghost "hebelt" in keiner Weise irgendwelche Treiber aus. Er reagiert ganz normal auf die Events des Betriebssystems und das Plugin komuniziert über die COM-Schnittstelle mit dem DVBViewer.

 

Gruß

Prinz

Link to comment

So hier isses:

 

 

MultimediaKeys.dll

 

Wenns gut gelungen ist, sollte der DVBV nicht mehr zwangsläufig den Inputfocus haben müssen.

Wenn allerdings eine andere App "über" dem DVBV liegt und diese die APPCOMMANDS behandelt, hat diese Vorrang.

 

Hier noch die C++ Quellen als VisualStudio 2008 Projekt.

 

DVBVMultimediaInputPlugin Source.zip

 

erwin

MultimediaKeys.zip

DVBVMultimediaInputPlugin_Source.zip

Edited by erwin
Link to comment

@ Griga - smilie_frech_097.gif

 

die Integration scheint relativ leicht zu sein.

:(War sie, ich gratuliere!!! :bye:

 

ALLE AppEvents gehen im TSPlayer schon mit deinem ersten Versuch!

 

Leider ist noch korrektur nötig, da die grüne Leiste bei zeitlichen Sprung-Funktionen nicht folgt weil danach offenbar statt einem Play ein Pause-Befehl kommt (Pause-Icon wird gedrückt wenn das Video läuft).

 

Damit kann TSPlayer nichts anfangen, spielt aber mit AppCommand PLAY (nicht PLAY/PAUSE) von der gewählten Stelle aus ab, wärend der grüne Balken immernoch an der letzten Stelle die er verstanden hat hängenbleibt. Wenn man in diesem Zustand mit der Maus ohne eine Maustaste gedrückt zu haben auf dem Zeitbalken hin- und her fährt folgt der Zeitzeiger völlig willenlos (ulkig).

 

Du mußt also irgendwie *Play* einbauen.

 

Und CHANNEL_UP muß natürlich *30 s forward* sein, CHANNEL_DOWN *30 s back*.

 

Genaueres zu Interaktionen und Volume ist sehr Zeitaufwändig, bitte Geduld...

 

 

P.S.

Offenbar hast du VK Befehle schon eingebaut. Bei VK_MEDIA_NEXT_TRACK 176 und VK_MEDIA_PREV_TRACK 177 gibt es das oben geschilderte Prob nicht! Funkt einwandfrei.

Edited by Griga
Link to comment
So hier isses:

 

MultimediaKeys.zip

 

Wenns gut gelungen ist, sollte der DVBV nicht mehr zwangsläufig den Inputfocus haben müssen.

Wenn allerdings eine andere App "über" dem DVBV liegt und diese die APPCOMMANDS behandelt, hat diese Vorrang.

Soll das jetzt schon so funktionieren? Wie kann man es testen? Mit GE oder Pro?

Link to comment

 

Super, dass sich hier endlich mal jemand traut bzw. dazu bereit ist, seine Quellen zu veröffentlichen. Wenn das Schule macht, dann trauen sich bestimmt bald viel mehr Leute an eigene Plugins - einfach weil der Einstieg viel leichter fällt.

 

Ich hoffe, dass sich andere Plugin-Programmierer ein Beispiel daran nehmen und nicht weiterhin ihren Quelltexte auf der lokalen Platte verstecken. ;-)

Edited by dgdg
Link to comment

Kennt sich jemand mit den folgenden virtuellen Keycodes aus?

 

  VK_VOLUME_MUTE = $AD;
 VK_VOLUME_DOWN = $AE;
 VK_VOLUME_UP = $AF;
 VK_MEDIA_NEXT_TRACK = $B0;
 VK_MEDIA_PREV_TRACK = $B1;
 VK_MEDIA_STOP = $B2;
 VK_MEDIA_PLAY_PAUSE = $B3;

 

Nach der Beschreibung von craig_s vermute ich, dass sie parallel zu den entsprechenden AppCommands in der Anwendung eintrudeln, also via WM_KEYDOWN / WM_KEYUP. Beides auswerten wäre in dem Fall schlecht, denn dann würde die Funktion doppelt ausgelöst :( Unter welchen Bedingungen geschieht das? Auch wenn die Tastendrücke von einer FB kommen?

Link to comment

Also hab zwar grade nichts zur Hand was APPCOMMANDS sendet.

Aber Trotzdem eine Rückmeldung zum MultimediaKeys Plugin. Irgend was scheint da beim beenden noch nicht ganz zu klappen. Wenn ich das Plugin aktiviert habe bekomme ich wenn ich den DVBViewer aus schalte eine Fehlermeldung:

---------------------------

DVBViewer: DVBViewer.exe - Fehler in Anwendung

---------------------------

Die Anweisung in "0x00404696" verweist auf Speicher in "0x0147b928". Der Vorgang

 

"read" konnte nicht auf dem Speicher durchgeführt werden.

 

 

Klicken Sie auf "OK", um das Programm zu beenden.

Klicken Sie auf "Abbrechen", um das Programm zu debuggen.

---------------------------

OK Abbrechen

---------------------------

OK bringt immer die gleiche Dialogbox nochmal und mit Abbrechen ist Schluss.

 

Ich nutze Windows XP (eingeschränkter Benutzer) DVBViewer 4.3.1.91 UserMode 0 (Zugriffsrechte sind gesetzt).

Link to comment

:( ich weiss warum ich damals das multimedia keyboard plugin ganz schnell wieder zurück gezogen hab. :bye: Das ganze ist, wenn es immer funktionieren soll, viel aufwendiger, als mal eben was zusammen zu schmeissen. Ich hab fasst das gefühl, das MS das gar nicht möchte, das es so geht.

 

Wer wirklich interesse an dem kram hat, sollte sich lieber mit der HID schnittstelle befassen, darauf basiert das ganze und man hat wesentlich mehr freiheiten...

Link to comment
Irgend was scheint da beim beenden noch nicht ganz zu klappen. Wenn ich das Plugin aktiviert habe bekomme ich wenn ich den DVBViewer aus schalte eine Fehlermeldung:

Ist genau das, was ich weiter oben erwähnte :( Ich habe hier auch ein Plugin (nicht von mir), das bringt nach einem Skinwechsel beim Beenden eine Schutzverletzung aus genau demselben Grund. Wieso hast Du schon .91?

Link to comment

Ne und ne und ne Lars, mach doch nich alles so pomadig!

 

erwin ist mein Held! Keinerlei Fehlermeldung mit DVBV 4.2 und fast alles klappt auf Anhieb! Ich drücke jetzt auf AppCommand_Record und der DVBV recodiert, yeah!

 

Das ist ein schöner Schritt richtung DVBV installieren und los gehts. Und nur darum geht's. Wer Farbtasten braucht ist eh schon Junkiie.

 

Neben Record gehen spontan beim Einlernen auch: CH up/down, Play, Pause, Play/Pause, FWD, RWD, die bis jetzt mit DVBV keine Chance hatten.

 

erwin, auch dein Plugin (wie TSPlayer) hört alle MEDIA_ und VOLUME_ Virtual-Key Befehle, evl. ist es so, dass wenn bei VK und APPCOMMAND die gleichen Befehle existieren beide gesendet werden?

 

Kurioses Beispiel:

Ich schicke VK_MEDIA_PREV_TRACK (177) an den lernenden DVBV, dein *Multimedia keys* Plugin ist aktiv.

Angezeigt wird im DVBV beim Einlernen jetzt statt bisher immer ch177 das: MEDIA_PREV_TRACK. Obwohl dein Plugin doch nur AppEvents verstehen soll? Oder nicht?

 

Bzw. noch kurioser:

beim ersten VK Befehl (also nur der Befehle, die VK und AppCommand gemeinsam haben), den ich an DVBV zum Einlernen schicke werden beide gleichzeitig eingelernt, ch177 + MEDIA_PREV_TRACK ! Da muß ich einen von beiden löschen, sonst wird der Befehl im DVBV nachher doppelt ausgeführt (wenn er schnell genug ist, zB bei start/stopp). Dann bei allen folgenden Einlern-Aktionen fällt der zweite ch... Eintrag weg.

Hmmm... der richtige AppCommand heißt MEDIA_PREVIOUSTRACK ?

 

Bei *reinen* AppCommands, also solchen, bei denen es keine Entsprechungen bei VK gibt und die ich natürlich auch nur als AppCommands schicken kann passiert das nicht -> Record, Channel up/down, Play, Pause, Fastforward, Rewind.

 

Wie auch immer, dein Plugin funktioniert und ich find's klasse! smilie_op_049.gif

Edited by craig_s
Link to comment
Wie auch immer, dein Plugin funktioniert

Du hast kein Problem beim Beenden des DVBV? Ist zwar inzwischen gefixt aber in der Dir vorliegenden Version gabs auch bei mir Probleme.

Zweitens, die Theorie wonach der Shell Hook auch nicht fokusierte Apps umfasst geht bei mir nicht immmer auf. Suche noch.

 

 

Kurioses Beispiel:

Ich schicke VK_MEDIA_PREV_TRACK (177) an den lernenden DVBV, dein *Multimedia keys* Plugin ist aktiv.

Angezeigt wird im DVBV beim Einlernen jetzt statt bisher immer ch177 das: MEDIA_PREV_TRACK. Obwohl dein Plugin doch nur AppEvents verstehen soll? Oder nicht?

Auf die Anzahl der gesendete Events hat das Plugin keinen Enfluss, es fängt nur die APPCOMMANDS heraus. Wenn zusätzlich noch VK's gesendet werden ....

Die Anzeige "Multimedia Keys" als zuständiges Inputplugin heist, dass bei MEDIA_PREVIOUSTRACK das APPCOMMAND: APPCOMMAND_MEDIA_PREVIOUSTRACK emfangen wurde, habs nur abgekürzt. Woher das MEDIA_PREV_TRACK kommt? Keine Ahnung. Steht da wirklich "Multimedia Keys" als Pluginkennung?

 

erwin

Link to comment
Kennt sich jemand mit den folgenden virtuellen Keycodes aus?

 

  VK_VOLUME_MUTE = $AD;
 VK_VOLUME_DOWN = $AE;
 VK_VOLUME_UP = $AF;
 VK_MEDIA_NEXT_TRACK = $B0;
 VK_MEDIA_PREV_TRACK = $B1;
 VK_MEDIA_STOP = $B2;
 VK_MEDIA_PLAY_PAUSE = $B3;

 

Nach der Beschreibung von craig_s vermute ich, dass sie parallel zu den entsprechenden AppCommands in der Anwendung eintrudeln, also via WM_KEYDOWN / WM_KEYUP. Beides auswerten wäre in dem Fall schlecht, denn dann würde die Funktion doppelt ausgelöst :( Unter welchen Bedingungen geschieht das? Auch wenn die Tastendrücke von einer FB kommen?

 

Bzw. noch kurioser:

beim ersten VK Befehl (also nur der Befehle, die VK und AppCommand gemeinsam haben), den ich an DVBV zum Einlernen schicke werden beide gleichzeitig eingelernt, ch177 + MEDIA_PREV_TRACK ! Da muß ich einen von beiden löschen, sonst wird der Befehl im DVBV nachher doppelt ausgeführt (wenn er schnell genug ist, zB bei start/stopp). Dann bei allen folgenden Einlern-Aktionen fällt der zweite ch... Eintrag weg.

Dies hab ich bei mir auch schon gesehen. Also beim ersten APPCOMMAND wird da beides angelernt: ch177 + MEDIA_PREV_TRACK. Versuche ich das dann zu reproduzieren, kommen nur noch die AppCommands.

Ich spekuliere mal: Der zuständige Treiber testet ab, ob APPCOMMAND behandelt wird (in diesem Falle indem er beides sendet). Wenn er festgestellt hat, dass APPCOMMAND benandelt wird, sendet er fortan nur noch diese Events.

 

erwin

Link to comment

Vielleicht als Ergänzung. Microsoft hat sich extra was einfallen lassen um sowas festzustellen: Aus der

 

WM_APPCOMMAND Notification-Reference

 

Unlike other windows messages, an application should return TRUE from this message if it processes it. Doing so will allow software that simulates this message on Microsoft Windows systems earlier than Windows 2000 to determine whether the window procedure processed the message or called DefWindowProc to process it.

 

Wenns denn da ist, wirds ja vielleicht auch genutzt.

 

erwin

Link to comment
Der zuständige Treiber testet ab, ob APPCOMMAND behandelt wird (in diesem Falle indem er beides sendet).

Wenn das via WM_KEYDOWN kommt, folgt offenbar auch WM_KEYUP.

 

Im TSPlayer habe ich die Sache sehr geradlinig implementiert, also ohne Shell Hook, Input Plugin, konfigurierbarer Zuordnung und Kram. Der TSPlayer wertet einfach bei WM_APPCOMMAND-Messages LParamHi aus und ordnet einige Werte festverdrahtet vorhandenen Funktionen zu. VK_MEDIA_XXX und VK_VOLUME_ XXX Keycodes werden ignoriert.

 

Das funktioniert offenbar soweit. Es gibt nur ein Problem:

 

Wenn der User im Play-Zustand eine der Funktionen für Suchen/Springen anwählt, geht der TSPlayer in den Pause-Zustand. Solange der User die (Maus-)Taste gedrückt hält, wird per Auto-Repeat fleißig gespult (mit Bildwiedergabe, was zwingend den Pause-Zustand erfordert). Ein beliebiges WM_KEYUP oder WM_XBUTTONUP beendet die Sache, d.h. der TSPlayer kehrt dann automatisch in den Play-Zustand zurück.

 

Die AppCommands bieten jedoch keine Entsprechung zu WM_KEYUP, d.h. Spulen kann damit nicht wie beschrieben funktionieren. In einem Fall hat es bei craig_s nur deshalb zufällig geklappt, weil der parallel zu dem AppCommand gesendete VK auch ein WM_KEYUP nach sich zog.

Link to comment

Wenn ich eine spezielle APPCOMMAND-Taste aus der Behandlung herausnehme (return-Wert) werden dort dann die chrXXX Keycodes gesendet, wahrscheinlich auch mit abschließendem WM_KEYUP.

 

PS: Da sich hier eine evt. Treiberabhängigkeit andeutet, ich hab ne Cherrytastatur (KeyM@n 2.6)

 

erwin

Link to comment

Ich glaube, die VK_MEDIA_XXX und VK_VOLUME_ XXX Keycodes kann man vergessen. Sie decken nur einen Subset der AppCommands ab, kommen eventuell treiberabhängig und vielleicht bei einer FB als Quelle gar nicht (?). Nichtsdestotrotz muss man sie auf der Rechnung haben, um das doppelte Auslösen von Kommandos zu vermeiden. :(

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...