Deklaration: Declare Function CreateThread Lib "kernel32" ( _ lpThreadAttributes As Any, _ ByVal dwStackSize As Long, _ ByVal lpStartAddress As Long, _ ByVal lParameter As Long, _ ByVal dwCreationFlags As Long, _ lpThreadID As Long) As Long Beschreibung: Parameter:
dwCreationFlags Konstanten: Const CREATE_SUSPENDED = &H4 ' Der Thread wird erst gestartet, wenn die ResumeThread-Funktion aufgerufen wird. Rückgabewert: Beispiel: Private Declare Function LoadLibrary Lib "kernel32" _ Alias "LoadLibraryA" ( _ ByVal lpLibFileName As String) As Long Private Declare Function FreeLibrary Lib "kernel32" ( _ ByVal hLibModule As Long) As Long Private Declare Function GetProcAddress Lib "kernel32" ( _ ByVal hModule As Long, _ ByVal lpProcName As String) As Long Private Declare Function CreateThread Lib "kernel32" ( _ lpThreadAttributes As Any, _ ByVal dwStackSize As Long, _ ByVal lpStartAddress As Long, _ ByVal lParameter As Long, _ ByVal dwCreationFlags As Long, _ lpThreadID As Long) As Long Private Declare Function WaitForSingleObject Lib "kernel32" ( _ ByVal hHandle As Long, _ ByVal dwMilliseconds As Long) As Long Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long) As Long ' CreateThread dwCreationFlags-Konstante Private Const CREATE_SUSPENDED = &H4 ' Der Thread wird erst gestartet, wenn ' die ResumeThread-Funktion aufgerufen wird ' eine der RegisterServer Rückgabe-Konstanten Private Const S_OK = &H0 ' eine der WaitForSingleObject dwMilliseconds-Konstanten Private Const INFINITE = &HFFFF ' Eigene Konstanten Sammlung Private Enum TLoc LocalThread = 0 ExternThread = 1 End Enum ' Wählt eine Datei zum Registrieren aus Private Sub Command1_Click() On Error GoTo CancelErr With CommonDialog1 .CancelError = True .DialogTitle = "Datei zum Registrieren Öffnen" .Filter = "Alle Dateien|*.*|Alle _ Bibliotheken|*.exe;*.ocx;*.dll;*.drv;*.vxd;*.tlb|*.EXE - _ Anwendungen|*.exe|*.OCX - ActiveX Datei|*.ocx|" & _ "*.DLL - DLL Libary|*.dll|*.DRV - Geräte Treiber|*.drv|*.VXD - _ Virtueller Treiber|*.vxd" .Flags = cdlOFNFileMustExist .InitDir = App.Path .ShowOpen Label2.Caption = .FileTitle Label2.Tag = .FileName End With Exit Sub Label2.Caption = "" Label2.Tag = "" End Sub ' De- / Registriert eine Datei intern oder extern (RegSvr32.exe) Private Function RegFile(ByVal ThreadLocation As TLoc, ByVal ExParams As String) Dim hProc As Long, hModule As Long, hThread As Long, ThreadID As Long Dim hExitCode As Long, Retval As Long Select Case ThreadLocation Case LocalThread ' Selbst registrieren ' Datei laden hModule = LoadLibrary(Label2.Tag) If hModule << 0 Then ' Funktionsadresse zum Registrieren ermitteln hProc = GetProcAddress(hModule, ExParams) If hProc << 0 Then ' Neuen Thread mit der ermittelten Funktionsadresse starten hThread = CreateThread(ByVal 0&, 0&, hProc, 0&, 0&, ThreadID) ' Warten, dass die Funktion abgeschlossen wurde Retval = WaitForSingleObject(hThread, INFINITE) If Retval << S_OK Then MsgBox "Die Datei konnte nicht De- / Registriert werden" Else MsgBox "Die Datei wurde erfolgreich De- / Registriert" End If Else MsgBox "Es konnte kein Eintrag zum De / Registrieren _ der Datei gefunden werden" End If ' Thread Handle freigeben Retval = CloseHandle(hThread) ' Datei wieder entladen Retval = FreeLibrary(hModule) Else MsgBox "Die Datei konnte nicht geladen werden." End If Case ExternThread ' per RegSVR32 Registrieren Shell "regsvr32.exe " & ExParams, vbNormalFocus End Select End Function ' Ruft ein Popupmenü zum Auswählen der Registrierungsmethode auf Private Sub Command2_Click() If Label2.Tag << "" Then Me.PopupMenu Mnu_FileReg End If End Sub ' Datei manuell registrieren Private Sub Mnu_RegIn_Click() Call RegFile(LocalThread, "DllRegisterServer") End Sub ' Datei registrieren über Regsvr32.exe Private Sub Mnu_RegEx_Click() Call RegFile(ExternThread, Label2.Tag) End Sub ' Datei manuell deregistrieren Private Sub Mnu_UnRegIn_Click() Call RegFile(LocalThread, "DllUnregisterServer") End Sub ' Datei deregistrieren über Regsvr32.exe Private Sub Mnu_UnRegEx_Click() Call RegFile(ExternThread, Label2.Tag & " /u") End Sub Diese Seite wurde bereits 13.115 mal aufgerufen. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |