VB-Homepage Tipp 368

Erzeugen einer DLL mit Visual Basic

Anfrage an Radio Jerewan :
Ist es möglich, mit Visual Basic eine DLL zu erzeugen?

Antwort :
Im Prinzip ja, aber wie umfangreich soll ein Demoprojekt sein, ohne das mir jemand nachsagt, ich hätte nur am Tellerrand gekratzt und dennoch so, daß auch ein Einsteiger noch die Funktionsweise versteht.

Immer wieder kommen Fragen, ob es denn mit VB möglich ist, DLL's zu erstellen.
Und darauf ein eindeutiges JA. (Zumindestens ab Version 5)

Dynamic Link Libraries sind ja aus dem Grund entstanden, Programmen die    Möglichkeit zu bieten, Funktionen aus DLL zu beziehen um das Meer der Dateien zu reduzieren. (Gemeinsam genutzte Dateien).

Das das Ziel nicht erreicht wurde, kann jeder in seinem Systemverzeichnis nachvollziehen.

Ich möchte in diesem Demoprojekt eher aufzeigen, daß es erstens sehr wohl möglich ist DLLs mit VB zu erzeugen und zweitens die grundlegende Funktionsweise aufzeigen.
Wenn jemand Bedarf an mehr hat, stell ich ggf. auch noch ein umfangreiches Projekt zum Download bereit.
  1. Starten Sie VB6 und geben Sie an, das Sie ein ActiveX DLL Projekt erstellen möchten.

  2. Nach dem Öffnen wird Ihnen im Projekt Explorer ein Klassenmodul mit dem Namen Class1 angezeigt. Ändern Sie hier den Namen nach WINSYSDIR

  3. Öffnen Sie nun das Projekteigenschaftenfenster unter Projekt-Eigenschaften von... und vergeben Sie unter Projektname [Klappkarte Allgemein] den Namen Infodll .
    Desweiteren können Sie unter Beschreibung noch eine Text zur Information über Ihr Projekt einfügen.

  4. Öffnen Sie Ihr Klassenmodul und tragen unter Allgemein/Deklarationen folgende API Anweisungen ein.


    Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

  5. Sie wissen oder ahnen vielleicht schon, was denn unsere DLL als Aufgabenstellung bekommt. Sie soll auf Abfrage durch ein Programm den Pfad des Windows und Windows/Systemverzeichnis zurückliefern.
    Dazu definieren wir nun die beiden Funktionen, diese müssen als Public, also öffentlich, deklariert werden.

  6. Public Function WinDir() As String
         Variable1$ = Space$(255)
         x% = GetWindowsDirectory(Variable1$, Len(Variable1$))
         WinDir = Left$(Variable1$, x%)
    End Function

    Public Function SysDir() As String
    Variable2$ = Space$(255)
    y% = GetSystemDirectory(Variable2$, Len(Variable2$))
    SysDir = Left$(Variable2$, y%)
    End Function

  7. Damit haben wir schon alle notwendigen Funktionen der DLL übergeben und können diese kompilieren lassen. Speichern Sie Ihr DLL Projekt ebenfalls ab und öffnen Sie ein neues Projekt. Standard-EXE

  8. In unserem Programm, das auf die Funktionalität der DLL zurückgreifen soll, wollen wir lediglich die beiden möglichen Funktionen aufrufen und die ermittelten Pfade des Windows und Windows/Systemverzeichnis in einer Msgbox ausgeben. Um mit der DLL arbeiten zu können, müssen wir sie unserem Projekt als Verweis hinzufügen. Wählen Sie dazu unter Projekt den gleichnamigen Eintrag. Wählen Sie den Button Durchsuchen... und wechseln in das Verzeichnis, in das Sie die Infodll.dll kompiliert haben.

  9. Ist die DLL hinzugefügt, steht uns ihr Funktionsumfang schon fast zur Verfügung, wir müssen Sie nur noch einem eigenen Typ zuweisen.
    Fügen Sie die Angaben entweder gleich in das Form_Load Ereignis hinzu oder fügen Sie einen Button auf Ihre Form ein und übergeben diesem die Anweisungen.

    Dim Verzeichnis As New WINSYSDIR
    MsgBox Verzeichnis.WinDir & vbCrLf & Verzeichnis.SysDir

  10. Starten Sie Ihr Projekt und sehen Sie erstaunt, wie Ihnen die Pfade zu den beiden Verzeichnissen angezeigt werden, ohne das Sie in diesem Projekt die notwendigen Deklarationen angeben mußten.

Tipp-Download

Quelle :

Zurück zur Übersichtsseite