PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arbeit mit Dlls


DarkTemplar
04.06.2002, 13:24
Hi at all!

Ich versuche seit neustem Dlls in meine Programme einzubinden, wobei jedoch ein Problem aufgetaucht ist, dass ich nicht alleine gelöst bekomme.
Die entsprechende Dll(wird von keinem anderen Programm genutzt und wurde von mir einfach auf den Computer kopiert, ohne sie zu registrieren oder ähnliches) beinhaltet nämlich die Klasse zur Erstellung eines Objektes und wenn ich die dll in das programm eingebunden habe und ein neues Objekt dieser KLasse definieren möchte, taucht immer der selbe Fehler auf.
Mein Programmcode lautet wie folgt:


Static meine_Variable AS mein_Objekt

If meine_Variable Is Nothing Then
Set meineVariable = New mein_Objekt
End If


mein_Objekt ist dabei das Objekt, dass in der dll definiert ist. Nun tritt dabei jedoch immer Laufzeitfehler 429 "Objekterstellung durch AktiveX-Komponente nicht möglich" auf. In der Hilfe steht dann als Erklärung, dass die Klasse in der Systemregistrierung registriert werden muß. Nun meine Frage: wie kann ich das umgehen, bzw. wie registriere ich eine dll in der systemsteuerung?

Ich hoffe ihr könnt mir dabei weiterhelfen!

Bye,
DarkTemplar


Mimo
05.06.2002, 00:11
Hi!

ActiveX- bzw. COM-DLLs sowie OCXe werden mit REGSVR32. Der Aufruf sieht folgendermassen aus:

REGSVR32 xxx.dll

Gruss,
Mimo

DarkTemplar
05.06.2002, 12:43
Hi!!

Danke für die schnelle Hilfe, bloß bleibt da nur noch das Problem, dass regsvr32 keine gültige Methode bei meinem VB-Programm ist (auch die Hilfe kennt den Befehl nicht). Ist das also ein Shell-Befehl, oder habe ich bloß auf die entsprechende Dll (in dem dieser Befehl zu finden ist) noch nicht verwiesen und wenn das der Fall sein sollte, wie wäre der Name, den ich unter Verweise hinzufügen müßte?
Ach ja, und falls es nötig sein sollte, wie kann ich dann diesen dll-Eintrag wieder aus der Registrierung löschen?


Bye,
DarkTemplar

camperking
05.06.2002, 12:49
Start -> Ausführen -> regsvr32 camper.dll :D
Das musst du als Shell Befehl starten also!

DarkTemplar
05.06.2002, 13:00
Hi!!

Das ging aber wirklich schnell!
Kennt ihr vielleicht jetzt auch noch eine Möglichkeit, einen dll-Eintrag wieder aus der Registrierung zu entfernen? Schließlich soll ja auch an die Möglichkeit gedacht werden, dass jemand das Programm und damit auch die dll nicht mehr braucht!

Bye,
DarkTemplar

camperking
05.06.2002, 13:02
das ging schnell? achso naja, hatte mal wieder das erste mal seit 4 monaten wieder hierrein geschaut *GG* ok aber naja ne, da kann ich dir leider nich helfen. Aber eigentlich ist das doch auch unwichtig oder?

Mimo
05.06.2002, 13:34
Nun, ich bin zwar nicht ganz so schnell :D , habe aber auch Uuuurlauuub! ;-)

Das Deregistrieren funktioniert auch mit REGSVR32, mit dem zusätzlichen Parameter -u.

Das lautet denn so:

REGSVR32 -u xxx.dll

Das ist ganz und gar nicht unwichtig, denn wer Komponenten entwickelt hat und seine Installationsroutine auf dem Entwicklungsrechner testet, sollte vorher alles derigistrieren.

Ciao,
Mimo

btw... Von MS gibt es RegClean. Das sollte man so ab und zu mal über die Registry juckeln lassen... *g*

DarkTemplar
06.06.2002, 21:13
Thanks!!

Das hat mir wirklich weitergeholfen!
Bloß muß die Datei bei mir in der Dos-Befehlszeile vom System-Ordner aufgerufen werden und ich suche momentan noch eine Möglichkeit, wie man diesen Systemordner ermitteln kann (der Windows-Ordner-Name hängt ja ganz vom Benutzer ab!
Ich weiß zwar, dass man das in VBasic mit dem Shell-Befehl umgehen kann, bloß würde ich es ganz gerne anders lösen!

Kennt jemand von euch eine Möglichkeit mit VB den Windows-Ordner zu ermitteln?

Bye,
DarkTemplar

Mimo
07.06.2002, 12:23
Willst Du das ganze in einer Batchdatei laufen lassen?

Dann gibt es eine Umgebungsvariable "windir", die Du folgendermassen in Batchdateien verwenden kannst:

%windir%\system\regsvr32 xxx.dll

Je nach System (9x oder NT&Co.) kann das Verzeichnis natürlich auch "system32" lauten.

Falls das nicht die Anforderung erfüllt, gibt's ansonsten auch 'ne API um das Windows oder das Systemverzeichnis ermitteln zu können.

Gruss,
Mimo

DarkTemplar
08.06.2002, 15:35
Ja, ich möchte das ganze in einer bat-Datei laufen lassen. Dann hat der, dem ich es schicken möchte den Überblick über die Deinstellation und ich muß erst einmal kein ganzes deinstallationsprogramm schreiben.

Also danke vielmals!

Was aber meintest du mit API?
(ich habe es nicht so gut mit Abkürzungen)

Von einer anderen Lösung hatte ich auch schon gehört, die auf dem Auslesen von Daten der Registrierung basiert, doch schien mir das für solch ein kleines Problem einen zu erheblichen Programmieraufwand (habe schon mit den Grundfunktionen meines Programmes genügend zu tun *g*)

Bye,
DarkTemplar

Mimo
09.06.2002, 11:37
Mit API meine ich, dass Windows Funktionen bereitstellt, mit denen Du Standardverzeichnisse, wie das Windows-Verzeichnis, System-Verzeichnis, Temp-Verzeichnis... ermitteln kannst.

DarkTemplar
16.06.2002, 23:38
Ja, darüber habe ich es jetzt endgültig auch laufen lassen! Da war die extra Abteilung im Forum bezüglich API, ein daran enthaltener Link zur gesamten Auflistung einer deutschen Version und vor allem auch dein Hinweis echt hilfreich!

Also danke und bis auf bald mal wieder!
Bye,
DarkTemplar