vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: ActiveX dll per Code Laden? 
Autor: WaldiMaywood
Datum: 01.07.04 18:28

Hier ein Beispiel wie man vorgehen könnte:

Hab für dieses Bsp. eine ActiveX dll erstellt, welche auf den Namen "MyProject" hört und dieser ein Klasse Names "Class1" "spendiert". Die Klasse beinhaltet eine "HelloWorld" Methode. So, um diese zu starten ist erst einmal nötig, diese im System zu registrieren (COM-Server). Das ist mit folgenden Code möglich (Reg-Code aus der vb@rchiv Tipps & Tricks Ecke):
    Private Declare Function LoadLibrary Lib "kernel32" Alias _
    "LoadLibraryA" (ByVal lpLibFileName As String) As Integer
    Private Declare Function FreeLibrary Lib "kernel32" _
     (ByVal hLibModule As Integer) As Integer
    Private Declare Function GetProcAddress Lib "kernel32" _
     (ByVal hModule As Integer, ByVal lpProcName As String) As Integer
    Private Declare Function CreateThread Lib "kernel32" _
     (ByVal lpThreadAttributes As Object, ByVal dwStackSize As Integer, _
     ByVal lpStartAddress As Integer, ByVal lParameter As Integer, _
     ByVal dwCreationFlags As Integer, ByVal lpThreadID As Integer) As Integer
    Private Declare Sub ExitThread Lib "kernel32" _
     (ByVal dwExitCode As Integer)
    Private Declare Function WaitForSingleObject Lib "kernel32" _
     (ByVal hHandle As Integer, ByVal dwMilliseconds As Integer) As Integer
    Private Declare Function GetExitCodeThread Lib "kernel32" _
     (ByVal hThread As Integer, ByVal lpExitCode As Integer) As Integer
    Private Declare Function CloseHandle Lib "kernel32" _
     (ByVal hObject As Integer) As Integer
    Public Function RegisterFile(ByVal sFile As String, ByVal Register As _
      Boolean) As Boolean
        Dim Result As Boolean
        Dim Lib_ As Integer
        Dim sProc As String
        Dim r1 As Integer
        Dim r2 As Integer
        Dim Thread As Integer
        Try
            Result = False
            Lib_ = LoadLibrary(sFile)
            If Lib_ Then
                sProc = IIf(Register, "DllRegisterServer", _
                  "DllUnregisterServer")
                r1 = GetProcAddress(Lib_, sProc)
                If r1 Then
                    Thread = CreateThread(0, 0, r1, 0, 0, r2)
                    If Thread Then
                        r2 = WaitForSingleObject(Thread, 10000)
                        If r2 Then
                            FreeLibrary(Lib_)
                            r2 = GetExitCodeThread(Thread, r2)
                            ExitThread(r2)
                            Exit Function
                        End If
                        CloseHandle(Thread)
                        Result = True
                    End If
                End If
                FreeLibrary(Lib_)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        Dim s As String = ".../MyProject.dll"
        Me.RegisterFile(s, True)
    End Sub
Nachdem diese erfolgreich reg. wurde, ist es zur Laufzeit möglich, die Methode mit folgendem Code aufzurufen:
        Dim o As Object = CreateObject("MyProject.Class1")
        o.HelloWorld()
Viel Erfolg!
Steve
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ActiveX dll per Code Laden?950Johannes230.06.04 14:14
Re: ActiveX dll per Code Laden?843WaldiMaywood30.06.04 15:29
Re: ActiveX dll per Code Laden?730Johannes201.07.04 15:12
Re: ActiveX dll per Code Laden?699WaldiMaywood01.07.04 18:28
Re: ActiveX dll per Code Laden?697Johannes201.07.04 20:07
Re: ActiveX dll per Code Laden?679WaldiMaywood01.07.04 20:25

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel