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