Hat hier jemand Erfahrung mit / in der Entwicklung von IE-Erweiterungen, die sein Wissen teilen können? Dies würde Codebeispiele oder Links zu guten oder Dokumentationen über den Prozess oder irgendetwas beinhalten.
Ich möchte das wirklich tun, aber ich stoße auf eine riesige Wand mit mieser Dokumentation, miesem Code / Beispielcode / Mangel daran. Jede Hilfe / Ressourcen, die Sie anbieten könnten, wäre sehr dankbar.
Insbesondere möchte ich damit beginnen, wie Sie über eine IE-Erweiterung auf das DOM zugreifen bzw. es bearbeiten können.
EDIT, noch mehr Details:
Im Idealfall möchte ich eine Symbolleistenschaltfläche einfügen, die beim Klicken ein Menü mit Links zu externen Websites öffnet. Ich möchte auch auf das DOM zugreifen und JavaScript auf der Seite abhängig von einigen Bedingungen pflanzen.
Was ist der beste Weg, um Informationen in einer IE-Erweiterung beizubehalten? In Firefox / Chrome / den meisten modernen Browsern verwenden Sie window.localStorage
, aber mit IE8 / IE7 ist dies natürlich keine Option. Vielleicht eine SQLite-Datenbank oder so? Es ist in Ordnung anzunehmen, dass .NET 4.0 auf dem Computer eines Benutzers installiert wird.
Ich möchte Spice IE nicht verwenden, da ich einen erstellen möchte, der auch mit IE9 kompatibel ist. Ich habe das C ++ - Tag auch zu dieser Frage hinzugefügt, denn wenn es besser ist, eines in C ++ zu erstellen, kann ich das tun.
Antworten:
[UPDATE] Ich aktualisiere diese Antwort, um mit Internet Explorer 11 in Windows 10 x64 mit Visual Studio 2017 Community zu arbeiten . Die vorherige Version dieser Antwort (für Internet Explorer 8 in Windows 7 x64 und Visual Studio 2010) befindet sich am Ende dieser Antwort.
Erstellen eines funktionierenden Internet Explorer 11-Add-ons
Ich verwende Visual Studio 2017 Community , C # , .Net Framework 4.6.1 , daher können einige dieser Schritte für Sie etwas anders sein.
Sie müssen Visual Studio als Administrator öffnen , um die Lösung zu erstellen, damit das Post-Build-Skript das BHO registrieren kann (Registrierungszugriff erforderlich).
Erstellen Sie zunächst eine Klassenbibliothek. Ich habe meine InternetExplorerExtension angerufen .
Fügen Sie dem Projekt diese Verweise hinzu:
"Microsoft Internet Controls"
"Microsoft.mshtml"
Hinweis: Irgendwie wurde MSHTML nicht in meinem System registriert, obwohl ich es im Fenster Referenz hinzufügen finden konnte. Dies verursachte einen Fehler beim Erstellen:
Das Update finden Sie unter http://techninotes.blogspot.com/2016/08/fixing-cannot-find-wrapper-assembly-for.html . Sie können auch dieses Batch-Skript ausführen:
Erstellen Sie die folgenden Dateien:
IEAddon.cs
Interop.cs
und schließlich ein Formular, mit dem wir die Optionen konfigurieren. In dieser Form platzieren Sie ein
TextBox
und ein OkButton
. Stellen Sie die Dialogresult der Schaltfläche Ok . Fügen Sie diesen Code in den Formularcode ein:Gehen Sie in den Projekteigenschaften wie folgt vor:
C:\Program Files (x86)\Internet Explorer\iexplore.exe
http://msdn.microsoft.com/en-us/library/ms976373.aspx#bho_getintouch
Setzen Sie auf der Registerkarte Build -Ereignisse die Befehlszeile Post-Build-Ereignisse auf:
Achtung: Obwohl mein Computer x64 ist, habe ich den Pfad des Nicht-x64 verwendet
gacutil.exe
und es hat funktioniert ... der für x64 spezifische ist:64- Bit- IE Benötigt 64-Bit-kompiliertes und 64-Bit-registriertes BHO. Obwohl ich nur mit 32-Bit-IE11 debuggen konnte, funktionierte die registrierte 32-Bit-Erweiterung auch mit 64-Bit-IE11.
Diese Antwort scheint einige zusätzliche Informationen zu enthalten: https://stackoverflow.com/a/23004613/195417
Wenn nötig, können Sie das 64-Bit-Regime verwenden:
Wie dieses Add-On funktioniert
Ich habe das Verhalten des Add-Ons nicht geändert. Eine Beschreibung finden Sie im Abschnitt IE8 unten.
## Vorherige Antwort für IE8
Mann ... das war viel Arbeit! Ich war so neugierig, wie ich das machen sollte, dass ich es selbst gemacht habe.
Zuallererst ... Kredit ist nicht alles von mir. Dies ist eine Zusammenstellung dessen, was ich auf diesen Websites gefunden habe:
Und natürlich wollte ich, dass meine Antwort die Funktionen enthält, die Sie gefragt haben:
Ich werde es Schritt für Schritt beschreiben, wie ich es mit Internet Explorer 8 in Windows 7 x64 geschafft habe ... Beachten Sie, dass ich in anderen Konfigurationen nicht testen konnte. Hoffe du verstehst =)
Erstellen eines funktionierenden Internet Explorer 8-Add-ons
Ich verwende Visual Studio 2010 , C # 4 , .Net Framework 4 , daher können einige dieser Schritte für Sie etwas anders sein.
Erstellt eine Klassenbibliothek. Ich habe meine InternetExplorerExtension angerufen .
Fügen Sie dem Projekt diese Verweise hinzu:
Hinweis: Diese Referenzen befinden sich möglicherweise an verschiedenen Stellen in jedem Computer.
Dies ist, was mein Referenzabschnitt in csproj enthält:
Erstellen Sie die Dateien auf die gleiche Weise wie die aktualisierten IE11-Dateien.
IEAddon.cs
Sie können die folgenden Zeilen aus der IE11-Version auskommentieren:
Interop.cs
Gleich wie IE11-Version.
und schließlich ein Formular, mit dem wir die Optionen konfigurieren. In dieser Form platzieren Sie ein
TextBox
und ein OkButton
. Stellen Sie die Dialogresult der Schaltfläche Ok . Der Code ist der gleiche für das IE11-Addon.Gehen Sie in den Projekteigenschaften wie folgt vor:
C:\Program Files (x86)\Internet Explorer\iexplore.exe
http://msdn.microsoft.com/en-us/library/ms976373.aspx#bho_getintouch
Setzen Sie auf der Registerkarte Build -Ereignisse die Befehlszeile Post-Build-Ereignisse auf:
Achtung: Da mein Computer x64 ist, befindet sich im Pfad der ausführbaren Datei von gacutil auf meinem Computer ein bestimmtes x64, das auf Ihrem Computer möglicherweise anders ist.
64- Bit- IE Benötigt 64-Bit-kompiliertes und 64-Bit-registriertes BHO. Verwenden Sie 64-Bit-RegAsm.exe (normalerweise in C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe).
Wie dieses Add-On funktioniert
Es durchläuft den gesamten DOM-Baum und ersetzt den mit der Schaltfläche konfigurierten Text durch einen gelben Hintergrund. Wenn Sie auf die vergilbten Texte klicken, wird eine Javascript-Funktion aufgerufen, die dynamisch auf der Seite eingefügt wurde. Das Standardwort ist "Browser", so dass es mit vielen von ihnen übereinstimmt! BEARBEITEN: Nachdem Sie die hervorzuhebende Zeichenfolge geändert haben, müssen Sie auf das URL-Feld klicken und die Eingabetaste drücken. F5 funktioniert nicht. Ich denke, dies liegt daran, dass F5 als 'Navigation' betrachtet wird und das Navigationsereignis abgehört werden muss (vielleicht). Ich werde versuchen, das später zu beheben.
Jetzt ist es Zeit zu gehen. Ich bin sehr müde. Fühlen Sie sich frei, Fragen zu stellen ... vielleicht kann ich nicht antworten, da ich auf eine Reise gehe ... in 3 Tagen bin ich zurück, aber ich werde versuchen, in der Zwischenzeit hierher zu kommen.
quelle
$(TargetDir)$(TargetFileName)
Verwendung"$(TargetDir)$(TargetFileName)"
2. Wenn Sie Visual Studio 2010 Express verwenden Sie wahrscheinlich (ich) nicht sehen , die Externe Programm Option in Debug Tab - I Führen Sie einfach den IE aus und navigieren Sie zur angegebenen URL 3. Es scheint nicht mit IE9 zu funktionieren - ich kann das Formular öffnen (Textmarker-Optionen), aber ich weiß nicht, wie ich den TextEin weiterer cooler Ansatz wäre das Auschecken:
http://www.crossrider.org
Es ist ein auf JS basierendes Framework mit jquery, mit dem Sie Browsererweiterungen für IE, FF und Chrome mit einem einzigen gemeinsamen JS-Code entwickeln können. Grundsätzlich erledigt das Framework die ganze böse Arbeit und Sie müssen nur noch Ihren Anwendungscode schreiben.
quelle
Der Zustand für IE-Erweiterungen ist eigentlich ziemlich traurig. Sie haben das alte Modell des IE5-Browser-Hilfsobjekts (ja, diese berüchtigten BHOs, die früher alle gerne blockierten), Symbolleisten und die neuen Beschleuniger für den IE. Selbst dann wird die Kompatibilität manchmal unterbrochen. Ich habe eine Erweiterung für IE6 beibehalten, die mit IE7 kaputt gegangen ist, daher haben sich einige Dinge geändert. Soweit ich weiß (ich habe BHOs seit Jahren nicht mehr berührt), müssen Sie sie größtenteils noch mit Active Template Libraries (ähnlich einer STL für Microsoft COM) codieren, und dies gilt auch nur für C ++. Sie könnten COM Interop mit C # machen und es in C # schaffen, aber es wird wahrscheinlich zu schwer für das, was es wert ist. Wie auch immer,
http://msdn.microsoft.com/en-us/library/aa753587(v=vs.85).aspx
Und für die Beschleuniger, die neu in IE8 sind, können Sie diese überprüfen.
http://msdn.microsoft.com/en-us/library/cc289775(v=vs.85).aspx
Ich bin damit einverstanden, dass die Dokumentation schrecklich ist und die APIs ziemlich veraltet sind. Trotzdem hoffe ich, dass dies hilft.
EDIT: Ich denke, ich kann hier eine letzte Informationsquelle werfen. Ich habe meine Notizen durchgesehen, als ich an BHOs gearbeitet habe. Und das ist der Artikel, mit dem ich angefangen habe. Es ist ein bisschen alt, hat aber eine gute Erklärung der ATL-Schnittstellen, die Sie bei der Arbeit mit IE-BHOs (z. B. IObjectWithSite) verwenden werden. Ich denke, es ist ziemlich gut erklärt und hat mir damals sehr geholfen. http://msdn.microsoft.com/en-us/library/bb250436.aspx Ich habe auch das Beispiel überprüft, das GregC gepostet hat. Es funktioniert mit mindestens IE8 und ist mit VS 2010 kompatibel. Wenn Sie also C # ausführen möchten, können Sie dort loslegen und sich Jon Skeets Buch ansehen. (C # in Depth 2nd Edition) Kapitel 13 enthält zahlreiche Informationen zu den neuen Funktionen in C # 4, mit denen Sie die Interaktion mit COM verbessern können. (Ich würde dir trotzdem empfehlen, dein Addin in C ++ zu machen)
quelle
Die Entwicklung von C # -BHOs ist ein Ärgernis. Es beinhaltet eine Menge icky COM-Code und p / invoke-Aufrufe.
Ich habe eine meist fertig C # BHO hier , den Sie kostenlos zu benutzen sind die Quelle für alles , was Sie wollen. Ich sage "meistens" , weil ich nie herausgefunden habe, wie man App-Daten im IE-geschützten Modus speichert .
quelle
Ich arbeite seit Jahren mit der Webbrowser-Steuerung von IE, und im Laufe der Zeit taucht immer wieder ein Name mit hilfreichen Beiträgen auf: Igor Tandetnik
Wenn ich eine Erweiterung entwickeln würde, würde ich ein BHO ins Visier nehmen und anfangen zu googeln nach:
BHO Igor Tandetnik
ODER
Browser-Hilfsobjekt Igor Tandetnik
Seine Beiträge sind oft sehr detailliert und er weiß, wovon er spricht.
Sie werden sich in der COM- und ATL-Programmierung bis an die Ohren wiederfinden. Eine exemplarische Vorgehensweise finden Sie unter: http://msdn.microsoft.com/en-us/library/ms976373.aspx
quelle
Ich stimme Robert Harvey zu, C # 4.0 bietet eine verbesserte COM-Interop. Hier ist ein bisschen älterer C # -Code, der dringend neu geschrieben werden muss.
http://www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspx
Dies ist ein Versuch, die Dinge zu vereinfachen, indem ATL vermieden und Spartan COM verwendet wird:
C ++ und COM, um BHOs zum Laufen zu bringen
quelle
Wenn Sie nicht versuchen, das Rad neu zu erfinden, können Sie Add In Express für IE versuchen . Ich habe das Produkt für das VSTO-Zeug verwendet und es ist ziemlich gut. Sie haben auch ein hilfreiches Forum und schnelle Unterstützung.
quelle
Es ist offensichtlich gelöst, aber für die anderen Benutzer würde ich das SpicIE-Framework empfehlen . Ich habe darauf basierend meine eigene Erweiterung erstellt. Es unterstützt nur offiziell Internet Explorer 7/8, aber ich habe das unter Internet Explorer 6-10 (von Windows XP bis Windows 8 Consumer Preview) getestet und es funktioniert einwandfrei . Leider gab es in der neuesten Version einige Fehler, daher musste ich sie beheben und meine eigene Version erstellen : http://archive.msdn.microsoft.com/SpicIE/Thread/View.aspx?ThreadId=5251
quelle
Ich empfehle Ihnen wärmstens diesen Beitrag von Pavel Zolnikov, der 2002 veröffentlicht wurde!
http://www.codeproject.com/Articles/2219/Extending-Explorer-with-Band-Objects-using-NET-and
Es basiert auf der Verwendung von Bandobjekten und wird mit .Net 2.0 kompiliert. Der Quellcode wird bereitgestellt und wird mit Visual Studio 2013 gut geöffnet und kompiliert. Wie Sie in den Kommentaren lesen werden, funktioniert er perfekt für IE 11 und Windows 7 und Windows 10. Für Windows 7 + SP1 und IE hat er perfekt funktioniert 11 Viel Spaß!
quelle
Die Frage stammt aus dem Jahr 2013, jetzt ist es 2020, aber sie kann für zukünftige Besucher hilfreich sein.
Ich habe versucht, die Antwort von @Miguel Angelo umzusetzen, es hat am Anfang nicht funktioniert.
Es gibt noch einige Einstellungen, die Sie definieren.
Im Internet Explorer (ich verwende IE-11) gehen Sie zu
Tools-->Internet Options-->Advanced
:Siehe auch diese SO-Frage und dieses Beispiel von Github
quelle
quelle