In einem unserer ersten Tipps Dateien per Quellcode registrieren haben wir Ihnen gezeigt, wie sich vor allem ActiveX-DLLs per Sourcecode registrieren lassen, um so den Fehler 429 Objekterstellung durch ActiveX-Komponente nicht möglich zu vermeiden. Mit dem nachfolgenden Modul ist es jetzt auch möglich, ActiveX-EXE Dateien per Sourcecode zu registrieren. Option Explicit ' ------------------------------------------------------- ' ' Mit der Funktion "RegisterFile" können dll,exe,olb ' und tlb-Dateien registriert und deregistriert werden. ' ' Aufgerufen wird das Programm \windows\regtlib.exe ' Luhmann, 07.11.01 ' ' ------------------------------------------------------- Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" ( _ ByVal hProcess As Long, _ lpExitCode As Long) As Long Private Declare Function OpenProcess Lib "kernel32" ( _ ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Boolean, _ ByVal dwProcessID As Long) As Long Private Declare Function WaitForSingleObject Lib "kernel32" ( _ ByVal hHandle As Long, _ ByVal dwMilliseconds As Long) As Long ' Datei registrieren/deregistrieren Public Function RegisterFile(ByVal Filename As String, _ Optional ByVal Register As Boolean = True) As Long Const PROCESS_QUERY_INFORMATION = &H400 Dim CmdLine As String Dim dwProcessID As Long Dim hProcess As Long If Register Then ' Datei registrieren CmdLine = "regtlib " & Filename Else ' Datei deregistrieren CmdLine = "regtlib -u " & Filename End If ' Prozess-ID dwProcessID = VBA.Interaction.Shell(CmdLine) ' Prozess öffnen hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, _ False, dwProcessID) If hProcess = 0 Then ' Fehler! RegisterFile = Err.LastDllError Call ErrMsg("OpenProcess " & CmdLine, RegisterFile) Exit Function End If ' Datei registrieren/deregistrieren Call WaitForSingleObject(hProcess, 1000) Call GetExitCodeProcess(hProcess, RegisterFile) If RegisterFile <> 0 Then _ Call ErrMsg("GetExitCodeProcess " & CmdLine, RegisterFile) ' Prozess schliessen Call CloseHandle(hProcess) End Function ' Fehhlermeldung auswerten Private Sub ErrMsg(ByVal Info As String, _ ByVal Errno As Long) Dim Errtext As String Select Case Errno Case 0: Errtext = " ok" Case 3: Errtext = " File not found or not a Typelib" Case 5: Errtext = " File was not registered" Case &H103: Errtext = "Process still active" Case Else: Errtext = "??" End Select MsgBox Info & vbCr & "Error=" & Errno & Errtext, _ vbExclamation, VB.App.EXEName End Sub Dieser Tipp wurde bereits 38.474 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. 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. |