ActiveX Control für Internet Explorer implementieren

sinamine

Mitglied
Hey Leute!

Hat bereits jemand ein ActiveX Control für den Internet Explorer entwickelt?
Unter dem Link: http://msdn2.microsoft.com/en-us/library/aa751970.aspx ist beschrieben, wie man mittels C++ ein solches Control erstellen kann. Ich habe es geschafft, einen Container mehr oder weniger zu implementieren, allerdings habe ich keine Ahnung wie ich darin mein COM Objekt hinzufügen kann/soll.

Ich habe nicht viel Erfahrung mit C++ sondern hauptsächlich mit C#, aber ich finde die meisten Lösungen nur in C++. Außerdem möchte ich im Internet Explorer ja ein bereits existierendes COM Objekt anzeigen, welches in unmanaged C++ Code geschrieben wurde.
Also es sollte ungefähr so funktionieren wie der Acrobat Reader von Adobe. Wenn ich ein Dokument im Internet Explorer öffnen möchte (Dokument ist eben ein COM Objekt, welches ein eigener Datentyp ist), so sollte sich mein ActiveX Control im Browser öffnen und mein COM Objekt darin anzeigen.

Ich hoffe, dass mir jemand weiterhelfen kann.

LG @ll
 
Willst du wissen, wie du das COM-Object laden kannst?

Ansonsten habe ich die Frage nicht so recht verstanden.
Habe noch kein Active-X-Objekt programmiert, dafür mit COM.
Wenn dein Problem im COM-Bereich liegt, kann ich dir also vielleicht helfen.
 
Ich möchte eben ein COM Objekt in einem ActiveX Control anzeigen. Mein COM Objekt wurde eben in C++ geschrieben und ich weiß nicht genau wie ich mein COM Objekt in einem ActiveX Control anzeigen kann bzw. hinzufügen soll. Ich möchte eben mein COM Objekt im Browser anzeigen können und deshalb muss ich wohl ein ActiveX Control implementieren.
 
Ok, ich habe nun ein MFC ActiveX Steuerelement in C++ erstellt. Nun würde ich dieses gerne im Browser anzeigen. Habe folgenden Code gefunden, der dies ermöglichen sollte:

Code:
<HTML>
<HEAD>
<OBJECT ID="Ampel1" WIDTH=49 HEIGHT=127
 CLASSID="CLSID:60B490F1-3535-4FE3-9D85-AC33CD6DB8DF"
 CODEBASE="file://C:\Ampel\Debug\Ampel.ocx">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="1291">
    <PARAM NAME="_ExtentY" VALUE="3329">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>

wenn ich aber diese .htm Datei öffne, dann wird das ActiveX Steuerelement geblockt, allerdings sollte man dies ja dann trotzdem öffnen können (ist ja schließlich bei normalen Webseiten auch so).

Hat vielleicht jemand damit Erfahrung?
 
Hi

ich glaub, der IE blockt das prinzipiell, solange es auf der Festplatte ist; im web dann nicht mehr.

Gruß
 
Ich möchte eben ein COM Objekt in einem ActiveX Control anzeigen. Mein COM Objekt wurde eben in C++ geschrieben und ich weiß nicht genau wie ich mein COM Objekt in einem ActiveX Control anzeigen kann bzw. hinzufügen soll. Ich möchte eben mein COM Objekt im Browser anzeigen können und deshalb muss ich wohl ein ActiveX Control implementieren.


Das COM Objekt hat ja eine definierte Schnittstelle... (bzw mehrere..)
Und diese Schnittstelle musst du dir anschauen, damit du damit arbeiten kannst, seine Funktionen ausführen kannst.

Ein Objekt der COM-Klasse kannst du erstellen, wenn du die CLSID der COM-Klasse kennst.
Mit CoCreateInstance zum Beispiel.

Oder sprichst du von einer anderen Art von COM-Objekt als ich?


sinamine hat gesagt.:
Außerdem möchte ich im Internet Explorer ja ein bereits existierendes COM Objekt anzeigen, welches in unmanaged C++ Code geschrieben wurde.

COM Objekte kannst du imho mit jeder Sprache (die COM-fähig ist) verwenden, egal in welcher Sprache es geschrieben worden ist. COM liefert dafür ja eine einheitliche Schnittstelle.
Also auch mit C# denke ich.
 
ich glaub, der IE blockt das prinzipiell, solange es auf der Festplatte ist; im web dann nicht mehr.

Also ich kann mir nicht so ganz vorstellen, dass das der IE blockt, nur weil es lokal liegt. Ich habe sämtliche ActiveX-Einstellungen aktiviert um mein Control anzuzeigen, allerdings ist es egal welche Sicherheitsstufe ich einstelle, denn es wird immer geblockt. Im Normalfall sollte ich mein Control herunterladen können, aber soweit komme ich nicht. Werde es nun mittels Web-Browser versuchen, vielleicht hilft es wirklich etwas.


Das COM Objekt hat ja eine definierte Schnittstelle... (bzw mehrere..)
Und diese Schnittstelle musst du dir anschauen, damit du damit arbeiten kannst, seine Funktionen ausführen kannst.

Ein Objekt der COM-Klasse kannst du erstellen, wenn du die CLSID der COM-Klasse kennst.
Mit CoCreateInstance zum Beispiel.

Oder sprichst du von einer anderen Art von COM-Objekt als ich?

Wir sprechen vom gleichen COM-Objekt.
Aber mittlerweile habe ich mein Problem schon gelöst! ;)
Danke trotzdem für eure Hilfe.
 
Zurück