DLL/OCX (De)Registrieren
Verfasst: 13.01.2009 18:44
Hier ein kleiner Code-Snippet mit dem man eine DLL/OCX in Windows registrieren/deregistrieren kann, wie es z.B. auch regsvr32.exe macht, wobei optinonal ein Timeout für die maximale Registrierungs-dauer angeben werden kann. Das Beispiel hab ich aus einem Pascal Snippet übersetzt, wenn ichs wieder finde werde ich den Link auch hier posten.
Viel Spaß damit:
Viel Spaß damit:
Code: Alles auswählen
; Registriert eine DLL/OCX Datei.
; (wie regsvr32)
; Eingangswerte:
; File = die zu registrierende Datei
; Register = 0 : deregistrieren
; <> 0 : registrieren
; Timeout = Timeout in ms
; Rückgabewerte.
; -1 = Konnte Library nicht öffnen
; -2 = DLL-Einsprungpunkt nicht gefunden.
; -3 = Timeout Überschritten
; 1 = alles OK!
EnableExplicit
CoInitialize_(0) ; Benötigt
Procedure Register(File.s, Register, Timeout)
Protected tLib, RtVar, Func.s
Protected tThread, tTime, tEntry
tLib = OpenLibrary(#PB_Any, File)
RtVar = -1
If IsLibrary(tLib)
RtVar = -2
If Register
Func = "DllRegisterServer"
Else
Func = "DllUnregisterServer"
EndIf
tEntry = GetFunction(tLib, Func)
If tEntry
tThread = CreateThread(tEntry, 0)
tTime = ElapsedMilliseconds()
Repeat
If Not IsThread(tThread)
RtVar = 1
Break
Else
Delay(2)
EndIf
Until ElapsedMilliseconds()-tTime> = TimeOut
If IsThread(tThread)
RtVar = -3
KillThread(tThread)
EndIf
EndIf
CloseLibrary(tLib)
EndIf
ProcedureReturn RtVar
EndProcedure
DisableExplicit