Frage

Bearbeiten : Neben der Prämie, wir sind bereit, $ 250 zu zahlen, um diese Fehler im Firefox / Gecko-Codebasis festgelegt haben. Hier ist ein einfaches Testprojekt (Visual Studio 2008 C #), die das Problem reproduziert.

Edit # 2 wir sind bereit, $ 600 zu zahlen diese Fehler behoben zu haben. Siehe oben für Beispielprojekt, das das Problem reproduziert.

Wir haben eine Firefox (Gecko) ActiveX-Steuerelement auf unserer C # Windows Form HTML angezeigt werden soll.

Wenn dieses Firefox ActiveX-Steuerelement auf unserem Formular ist, etwa 2-3% unserer wichtigsten drückt es nicht durch. Oder besser gesagt, eine andere Windows-Nachricht gesendet:

Wir halten Sie die TAB-Taste, um durch 3 Standard-WinForms Textfelder ein. Es wird richtig 97% der Zeit verhalten. Spy ++ sagt uns WM_KEYDOWN Nachricht ordnungsgemäß gesendet wird:

normales Verhalten http://judahhimango.com/images/normaltab.jpg

Aber zufällig, vielleicht 2-3% der Zeit, die Tab-Taste (oder eine andere Taste) nicht richtig verarbeitet. Spy ++ uns WM_CHAR erzählt wird stattdessen gesendet:

merkwürdiges Verhalten http://judahhimango.com/images/screwytab.png

Wenn das ungeradee Verhalten auftritt, entweder die Taste nicht verarbeitet oder nicht richtig verarbeitet wird (wie beispielsweise Einsetzen ein ‚\ t‘ Zeichen in ein Textfeld, das nicht Tabulatorzeichen unterstützt.

Dies geschieht nur, wenn das Firefox ActiveX-Steuerelement auf unserem Formular ist.

Unsere Frage ist : Ist Firefox / Gecko-Engine eine Art Tastatur-Hook installieren, die diese Nebenwirkungen verursachen könnten? Oder noch besser, wie beheben wir dieses Problem?

War es hilfreich?

Lösung

Die WM_CHAR Nachricht von Translate Anruf erzeugt wird, so einen guten Platz zu Beginn der Suche wäre die Translate ruft in dem Gecko-Quellcode.

Im ersten Beispiel-Code Sie die Funktion zur Verfügung gestellt wird nur von zwei Bibliotheken importiert - mozctl.dll und xul.dll. Da Sie, dass der gleiche Fehler Anspruch geschieht auch mit GeckoFX können wir mozctl.dll aus der Gleichung nehmen. Das lässt uns mit xul.dll, so angesichts der Gecko-Quellcode würde ich vorschlagen, in widget\src\windows\nsToolkit.cpp zu suchen. Ich bin nicht sicher, ob der Code ausgeführt wird, wenn der Motor eingebettet ist, aber wenn es dann die Bibliothek beginnt ein ganz neues Nachrichtensystem in anderem Thread, die brechen gebunden ist.

Leider kann ich nicht laufen oder den Code auf meinem Rechner (Windows 7 x64 w / o das Mozilla ActiveX-Steuerelement installiert ist) kompilieren, so kann ich nicht mit einem Debugger irgendetwas davon überprüfen. Hoffe, es hilft es jemand auf die Spur weiter.

Andere Tipps

Das eigentliche Problem ist, dass, wenn Mozilla in einer anderen Anwendung eingebettet ist, es Windows-Meldungen falsch pumpt, wenn es interne Ereignisse auslöst. Mozilla verwendet ein Ereignissystem über Threads zu koordinieren oder aufgeschobene Verarbeitung auf einem Thread zu planen (siehe nsIThread , nsIEventTarget ). Wenn Sie eine Webseite mit vielen aktiven XMLHttpRequests einbetten, zum Beispiel, wird Mozilla seine Event Dispatching-Schnittstelle verwenden, um Ereignisse zurück zu Javascript versenden und es wird Windows-Nachrichten als Nebenwirkung pumpen. Sobald Mozilla Ereignisse vollständig versendet, geht es zurück zum Hauptereignisschleife.

Wenn Mozilla Windows-Nachrichten Pumpen, ist es nicht die zusätzliche Verarbeitung durch die Anwendung des Ereignisschleife erfolgen umfassen - IsDialogMessage (), Translate (), PreTranslateMessage () oder andere Vorverarbeitung werden übersprungen, wenn Mozilla diesen Zustand wird in . Symptome sind daher Tabulatortaste drückt als Zeichen eingefügt zu werden, anstatt für Dialog Navigation verwendet wird, Tastatur-Hotkeys sporadisch ignoriert oder benutzerdefinierte Nachricht Vorverarbeitung sporadisch übersprungen zu sein. Zum Beispiel verliert der Outlook 2007/2010 „Compose“ -Bildschirm sporadisch Tastenanschläge, weil es auf benutzerdefinierte Nachricht Vorverarbeitung verläßt sich Tastatureingaben zu verarbeiten.

Siehe https://bugzilla.mozilla.org/show_bug.cgi?id= 582.790 für einen Patch, der das Problem behebt.

Ich habe Snoop Freien und PSM Anti-Keylogger. Einer von ihnen erkannt firefox versucht, ein Tastatur-Hook zu installieren. Mozilla / Firefox xul.dll Versuch der Installation an Tastatur-Hook-Datei. DENIED.

Ich habe bemerkt, dass Sie alle die Interoperabilität umgesetzt haben selbst. Können Sie dies mit dem Versuch GeckoFX Projekt und sehen Sie, wenn Sie den gleichen Fehler? Ich benutze dieses Projekt bei der Arbeit und habe keine Probleme noch angetroffen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top