Abfragen eines OnKeyDown Events in einem eingebetteten WebBrowser geht nicht
-
Hallo,
ich suche nun schon eine ganze Weile und werde aus dem Verhalten meiner anwendung nicht so recht schlau.Folgendes Scenario:
Ich habe in einem COM-Control einen eingebetteten WebBrowser, mittels dem ich HTML-Daten darstelle. Das funktioniert auch soweit ganz gut, allerdings müssen manche OnKeyDown-Events abgefangen werden. Also habe ich eine EventSink-Klasse definiert und den an den ConnectionPoint DIID_HTMLDocumentEvents2 eingehangen und mittels Advice aktiviert. Das funktioniert auch ganz prächtig für alle Mausaktivitäten wie z.B. Maus-Klicks und Moves. Allerdings werden Tastendrücke ( OnKeyDown und OnKeyUp )komplett ignoriert. Lustigerweise geht aber KeyPressed, nur nützt mir das nicht, da ich die Cursortasten abfragen muß ( und KeyPressed-Events sind leider kein Bestandteil der OnKeyPressed-behandelten Tasten ).
Ich benutze eine ControlSite zur Konfiguration des Browsers, implementiert sind die Interfaces DocHostUIHandler und DocHostShowUI. Ich habe schon mal einen Breakpoint in XDocHostUIHandler::TranslateAccelerator gesetzt und dieser wird bei einem Tastendruck nicht angesprungen. Im Spy sehe ich aber, daß von dem Internet-Service-Fenster des Webbrowsers Tastendrücke ausgesendet werden. Nur an kommen die bei mir leider nie.
Ich benutze einen InternetExplorer 6.0x und dazu Visual Studio 2003 undter WinXP-Embedded. Das Verhalten erhalte ich aber auch, wenn ich das Ganze auf einem normalen Windows XP laufen lasse.Ich bin gerade mit meinem Latein am Ende, hat hier vielleicht jemand eine Idee?
Gruß Kimmi
-
Warum benutzt Du nicht einfach PreTranslateMessage?
-
Habe ich schon probiert, die Methode wird nicht aufgerufen. Ich werde das aber noch mal probieren. Vielleicht hatte ich ja einen Denkfehler drinne!
[Edit] Scheinbar schießt ein zuvor durchlaufender PreTranslateMessage-Call mir quer. Daher wird mein KeyDown-Handler nicht durch ein MSDHTML-Event gerufen, das Event an sich kann nicht ausgelöst werden :-(. Mal wieder ein beispiel für böse gewucherte Historie.
Danke für den Denkanstoß!
Gruß Kimmi