Public Function RegServe(ByVal Path As String, _
ByVal mode As Boolean) As Boolean
Dim insthLib As Long
Dim lpLibAdr As Long
Dim hThd As Long
Dim lpExCode As Long
Dim procName As String
Dim Result As Long
Dim okFlag As Boolean
'###
DLL in den Speicher laden
insthLib = LoadLibrary(Path)
'### Aktion wählen
If insthLib Then
If mode Then
procName = "DllRegisterServer"
Else
procName = "DllUnregisterServer"
End If
'### Adresse der
DLL im Speicher
lpLibAdr = GetProcAddress(insthLib, procName)
If lpLibAdr <> 0 Then
'### Aktion starten
hThd = CreateThread(ByVal 0, 0, ByVal lpLibAdr, ByVal 0&, 0&, 0&)
If hThd Then
'### Maximal 5 sec warten
Result = WaitForSingleObject(hThd, 5000)
If Result = STATUS_WAIT_0 Then
'### Vorgang erfolgreich in 5 sec beendet
Call CloseHandle(hThd)
okFlag = True
Else
'### 5 sek. überschritten -> Thread schließen
Call GetExitCodeThread(hThd, lpExCode)
Call ExitThread(lpExCode)
Call CloseHandle(hThd)
End If
End If
End If
'### Speicher wieder freigeben
Call FreeLibrary(insthLib)
End If
If Not okFlag Then
MsgBox ("Fehler! Der Vorgang wurde abgebrochen.")
Else
'MsgBox ("Der Vorgang war erfolgreich!")
End If
RegServe = okFlag
End Function