BHO für den Firefox

  • Hallo zusammen,

    ich hab ein 'kleines' Problem.

    Letzte Woche hab ich ein BHO für den IE programmiert.
    Dieses bindet eine DLL von meinem Kollegen ein, in der DLL wird auf einen speziellen USB-Stick (mit SmartCard) geprüft.
    Die Daten der SmartCard werden ausgelesen und je nach dem welche SmartCard steckt sollen diverse Felder automatisch mit Informationen gefüllt werden.
    Unter IE ist das kein Problem und klappt auch gut, aber noch hab ich es nicht geschafft das ganze auch für den Firefox zu erstellen.

    Mein erstes Problem:
    Ist das ganze jetzt eine Erweiterung oder ein Plugin?
    Hab gelesen, dass man C++-DLLs nur bei Plugins verwenden kann, gestern hab ich allerdings auch einen Link gefunden wo etwas, so wie ich es verstanden habe, andres geschrieben wurde.
    Ich würde auf Erweiterung tippen und hoffe, dass es stimmt und ich hier richtig bin.

    Kann mir jemand von euch verraten wie ich das am besten realisieren kann?
    Ist XPCOM (das als Erweiterung ja scheinbar noch unterstützt wird) eine gute Wahl oder gibt es eine bessere Alternative?

    Da ich eine C++-DLL einbinden muss und Events mit gesteckt/gezogen und den User-Daten bekomme funktioniert das nicht einfach so mit JavaScript.
    Meine Hoffnung war, dass ich ein Plugin mit XPCOM) erstellen kann. (Wie gesagt, dachte bis gestern, dass es als Plugin die einzige Möglichkeit ist)
    Mit Firefox 3.5 hat das Beispiel funktioniert, ab 3.6 aber nicht mehr. (Hab gelesen das XPCOM jetzt nicht mehr unterstützt wird)


    Danke für jede Unterstützung.

    Gruß
    Aendrew

  • Hallo bugcatcher,

    könnte daran liegen, dass es 'tausend' Links gibt und ich vielen der Infos durchgearbeitet habe.
    Am Schluss durfte ich dann festzustellen, dass es so nicht (mehr) funktioniert.
    Mit der Zeit ist das einfach nur nervig und deprimierend.

    Daher hatte ich die Hoffnung, dass mir hier einer der Experten mehr verraten kann.
    Ich war mir ja auch nicht 100% sicher ob Erweiterung oder Plugin und ob XPCOM 'die Lösung' ist.

    Aber da du mir nichts 'besseres' empfohlen hast, geh' ich davon aus, dass XPCOM für das Problem 'die Lösung' ist.
    Daher vielen Dank, ich werd' die 'Anatomy of a Simple C++ Extension' und die zugehörigen Infos durcharbeiten.


    Gruß
    Aendrew

  • Ich behaupte nicht es sei die "Lösung", da ich mich selbst damit noch nicht befasst habe. Ich sah nur Links von irgendwelchen Seiten und hab mich gefragt, warum du nicht die offizielle Doku nutzt. Artikel die "out of date" sind, werden dort auch in der Regel markiert. Insofern ist alles unmarkierte, sofern kein entsprechender Vermerk darin enthalten ist, wohl kein Auslaufmodell. Sollte das bei dem XPCOM der Fall sein (soweit ich weiß, will man von dem Konzept abweichen und was alternatives entwickeln, da hab ich mich aber nicht weiter für interessiert, insofern kann ich dazu nichts sagen), wird es wohl irgendwo in der Doku als Warnung vermerkt sein.

    Als erste Anlaufstelle solle es sicher reichen. Ansonsten einfach warten. Vielleicht findet sich noch wer bei uns im Forum, der die da helfen kann. Ansonsten würde ich dir eher die Foren von mozillazine.org empfehlen. Da dürften sich erheblich mehr Leute mit Sachverstand für dein Problem finden.

  • Hallo,

    also die Lösung ist immer eine Erweiterung bzw. Add-on, die können sich richtig im Firefox austoben. Plugins sind z.B. Flash oder Java. Die werden nur geladen um Datentypen darzustellen, mit denen Firefox sonst nichts anfangen kann. Das was seit Firefox 3.6 nicht mehr unterstützt wird sind XPCOM-Komponenten, die direkt in den Firefox-Ordner kopiert werden. Das war nie als Erweiterungsmechanismus gedacht. Stattdessen soll man eben Erweiterungen schreiben, die können genauso XPCOM verwenden.

    Ab der nächsten Firefox-Version wird es auch eine relativ komfortable Möglichkeit geben, von JavaScript aus auf C++ zuzugreifen: https://developer.mozilla.org/en/JavaScript_…ules/ctypes.jsm
    Wenns schon früher funktionieren soll, führt wohl kein Weg an C++ und XPCOM vorbei. Ich formuliere das so, weil man da erstens (wohl, ich habs selber noch nie gemacht) Probleme mit unterschiedlichen Firefox-Versionen bekommen kann (wenn sich ein "unfrozen" Interface ändert), zweitens weil man dafür eine Build-Umgebung braucht, die (wohl, ich habs noch nicht probiert) nicht so einfach aufzubauen ist, und drittens weil eine eventuelle Benutzer-Oberfläche sowieso immer in JavaScript geschrieben werden muss.

    Gruß,
    Malte

  • Hallo bugcatcher,

    ich war ja froh über deine Antwort und arbeite auch noch daran :)

    Dr. Evil: Auch dir vielen Dank. Leider soll das ganze auch mit früheren Versionen funktionieren. Es wird aber keine Symbolleiste oder ähnliches geben. 'Nur' ein Teil, das im Hintergrund läuft und Events von der DLL bekommt.

    Gruß
    Aendrew