Hallo,
ich stehe bei meiner fast fertigen App vor einem Problem:
Ich hatte vor, eine Möglichkeit für Plugins zu machen.
Das sieht so aus:
Es wird ein ActiveX-Steuerelement, dessen Location, etc. bekannt ist,
zur Laufzeit geladen bzw. eingefügt.
(evtl.:) Es bekommt dann das hwnd Handle einer PictureBox um sich zeigen zu können.
Soweit so gut.
Die zwei Funktionen CreateObject und GetObject wollen dies bei mir nicht so richtig: Immer wieder:
... kann nicht durch ActiveX eingefügt werden...
Wie kann ich nun zur Laufzeit ein ActiveX.ocx in mein Programm einladen??? (Ohne die EXE zu verändern :D)
MfG,
Michael
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Schau Dir mal folgendes an:
Tutorial: Plugin erstellen
und als Ergänzung/Erweiterung
Erweitertes Beispiel zum Tutorial: Plugin erstellen
Das Problem ist ja das Er ein visuelles Control unbekannterweise dazu laden will.
Ich meine mal einen Quickhack irgendwo gesehen zu haben wie man eine tlb dynamisch lädt.
Wenn Er das hinbekommt könnte er möglicherweise über die ControlsAuflistung das Teil via Add hinzufügen.
Prinzipiell aber wohl eher unwahrscheinlich :/
Hallo,
aaalso:
Die Seite von ActiveVB hilft mir schon einiges weiter^^
Im prinzip (hätte ich schreiben sollen-.-) muss es nicht zwingend ein ocx sein,
so etwas wie das Beschreibene ist auch schon ein guter Anfang, aber:
Ist es auch möglich, dass das Plugin ein eigenes Formular hat?
Als Beispiel:
Das Projekt simple.vbp hat jetzt anstatt von drei Classes jetzt drei Forms.
Ich rufe das Plugin auf, gebe ihm den hwnd Handle einer PictureBox und das Plugin wird in der PictureBox angezeigt. Geht das?
Wie müsste dann der Befehl von CreatObject aussehen?
obj=CreateObject(FormClass(...)) ?
Wenn das ginge, wär's super ^^
MfG,
Michael
EDIT:
Habe mich jetzt mit Modifikationen herumgezanckt -
eine DLL habe ich schon, jedoch muss diese ja bekanntlich registriert sein...
Mein regsvr32 sagt mir immer so ne Fehlermeldung:
... WUrde geladen, aber der DLLInstall-Eingangspunkt wurde nicht gefunden. Stellen Sie sicher, dass die Datei gültig ist.
... DAs kapiere ich nun nicht...
Welches dings muss ich denn dann nehmen (meine DLL hat keinen integrierten installer - jedenfalls net von mir! :D)
Also meine VB-Zeit ist nun auch schon wieder einige Zeit her aber du kannst ein Plugin dazu zwingen sein Handle bzw.
das Handle seines Darstellungsfensters herauszugeben und nach dem Laden der PictureBox unterordnen entweder mit VB-eigenen Mitteln ( ging irgendwie) oder mit der Api-Funktion SetParent. Das Plug-In sollte danach mit den Dimensionen der PictureBox darüber informiert werden um seine Auflösung anpassen zu können. Über ein Interface kann man das Plug-In zwingen diese Funktionen mitzubringen. Irgendwie so in der Richtung würde ich das wohl machen. Viel Erfolg.
gut, werd das mal testen^^
thx
Funktionier denn das:
dim meinocx as usercontrol
meinocx.hwnd=picbox.hwnd
Wo kann man da den ocxnamen angeben?
Oder passiert dann schlicht nix?
Wär ne prima, einfache idee^^
MfG,
Michael
Es wird funktionieren, aber ob das Ergebnis dabei herauskommt, welches Du haben möchtest, ist die Frage.
Was genau möchtest Du denn machen?
Ist es auch möglich, dass das Plugin ein eigenes Formular hat?
Ja, möglich ist es. Hast Du es ausprobiert? Was passierte dabei?
Die DLL (das Plugin) brauchst Du nicht bei der Installation zu registrieren, das kannst Du zur Laufzeit machen. Wieder ActiveVB:
Tipp 0242: ActiveX-Komponenten zur Laufzeit registrieren
Wenn Du den genannten Fehler erhältst, ist irgendetwas faul in Deinem Code.
Tja, das werde ich dann ja sehn^^
Wie kann ich dem guten VB denn sagen, welches Formular laden soll?
Das eschriebene Tut ... bin ich zu faul für... kommt bei mir in die Kat "Notlösung"^^
Wissenschaftler - auch Programmierer - sind bequeme Leute :P
Meine MSDN installation ist fehlgeschlagen - deßhalb funktioniert der hilfe Knopf net...
MfG,
Michael