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.
- Starten Sie VB6 und geben Sie an, das Sie ein ActiveX DLL
Projekt erstellen möchten.
- Nach dem Öffnen wird Ihnen im Projekt Explorer ein
Klassenmodul mit dem Namen Class1 angezeigt. Ändern Sie hier den Namen nach WINSYSDIR
- Ö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.
- Ö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
- 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.
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
- 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
- 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.
- 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
- 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.
|