·  Start ·  Programme ·  Codes ·  Tipps ·  ActiveX ·  Tutorials · 




In diesem Tutorial werden die Grundbegriffe von ActiveX-DLLs erklärt. Der Lehrgang ist für Einsteiger gedacht und beinhaltet die Grundzüge sowie ein kleines Beispiel.

Übersicht:

Allgemeines
Grundlagen
Einbindung der DLL in Projekte
Aufruf und Übergabe
Beispiel-DLL
Instanzierung
Eigenschaften (Properties)
Methoden und Funktionen
Ereignisse
Zusammenfassung
 

 
 Allgemeines

DLLs (Dynamic Link Libraries) sind Laufzeitbibliotheken für Ihr Programm. Mit Visual Basic können Sie sogenannte Active-X-DLLs erzeugen. Active-X-DLLs sind In-Process-Server (im Gegensatz zu EXE = Out-Process-Server), die im Speicherbereich der aufrufenden Anwendung ausgeführt werden. Die Prozeduren und Funktionen einer Active-X-DLL stellen die Methoden einer Klasse dar. Eigenschaften können Sie wie bei Active-X-Steuerelementen als Property-Prozeduren erstellen.

Üblicherweise werden in einer DLL nur Funktionen und Eigenschaften verarbeitet - aber Sie können auch Formulare in eine DLL einfügen und diese anzeigen.

 

 Grundlagen

Um eine DLL zu  erstellen, müssen Sie über Datei / Neu ein Active-X-DLL-Projekt erzeugen. Das Projekt hat üblicherweise den Namen "Project1"; enthalten ist bereits ein Klassenmodul mit dem Namen "Class1".
Vergeben Sie eindeutige Namen für das Projekt und für die Klassenmodule !
 



Ich beziehe mich im folgenden auf das Beispiel, welches Sie im Anhang zu diesem Tutorial finden. Das Projekt hat nun den Namen "Atest", das Klassenmodul den Namen "Testing".

Warum die Vergaben von eindeutigen Namen so wichtig ist, liegt auf der Hand. Stellen Sie sich vor, Sie belassen die Vorgaben auf Projekt1 und Class1. Sie würden keine Unterscheidungen mehr treffen können und es werden wahrscheinlich Namenskonflikte in der Visual-Basic-Umgebung auftreten.

 


 Einbindung der DLL

Wenn Sie die ActiveX-DLL kompiliert haben, können Sie diese nun in jedes Ihrer Projekte einbinden. Dazu setzen Sie einen Verweis (Menü Projekt/Verweise oder auch Project/References) auf die DLL (siehe Abbildung):
 


 


 Aufruf und Übergabe

Erstellen Sie ein neues Visual-Basic-Projekt (Standard-EXE); Setzen Sie wie oben beschrieben, den Verweis auf Ihre DLL. Diese sollte sich entweder im System-Verzeichnis oder im Pfad Ihrer Anwendung befinden.

Mit den folgenden CodeZeilen  können Sie die Eigenschaften und Methoden der DLL über die Instanzierung der entsprechenden Klasse aufrufen:

Dim VariablenName As New KlassenName
oder auch
Set VariablenName = CreateObject("DLLName.Klassenname")
Im Beispiel wäre das:
Dim X As New Testing
oder auch
Set X = CreateObject("atest.Testing")
Nun können Sie alle als Public deklarierten Prozeduren, Eigenschaften und Funktionen aufrufen:
Msgbox X.TotalerSpeicher
 

 Beispiel-DLL

Unser kleines Beispiel kommt mit sehr wenigen Zeilen aus:

In dieser DLL wird der totale und der verfügbare Arbeitsspeicher ausgelesen und im Projekt aufgerufen bzw. angezeigt. Zuständig sind die Eigenschaften Property Get VariablenName()
Private Type MemoryStatus 
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MemoryStatus)

Public Property Get TotalerSpeicher() As String

Dim yourmemory As MemoryStatus
yourmemory.dwLength = Len(yourmemory)
GlobalMemoryStatus yourmemory

TotalerSpeicher = (yourmemory.dwTotalPhys / 1024)

End Property
Ausserdem finden Sie noch einige andere kleine Funktionen, die jedoch nur Testcharakter haben.

 

 Instanzierung

Mit der Eigenschaft Instancing entscheiden Sie, ob und wie die Klasse(n) in anderen Anwendungen verwendet werden:
 



Private:
Es ist kein Zugriff möglich und die Klasse ist in der Anwendung nicht sichtbar.

PublicNotCreatable:
Es ist prinzipiell kein Zugriff möglich, das Erstellen ist ausschließlich dem Server vorbehalten. Jedoch kann von einer anderen Klasse, die auf 6 - GlobalMultiUse gesetzt ist, eine Referenz übergeben werden

MultiUse:
Das ist die Voreinstellung für ActiveX-DLLs; Sie müssen eine Instanz der Klasse erzeugen (Dim Klasse As New KlassenName oder Set Klasse = CreateObject....).

GlobalMultiUse:
Hier müssen Sie nicht extra eine Instanz erzeugen. Der Aufruf erfolgt nun so:
KlassenName.Eigenschaft (in unserem Beispiel: Testing.Totalerspeicher)

 


 Eigenschaften (Properties)

Im Beispiel arbeiten wir mit Properties (Property Get TotalerSpeicher). Es handelt sich hier um eine Rückgabefunktion, Property Let wäre im Gegensatz dazu die Zuweisung einer Eigenschaft - die wir jedoch in diesem Beispiel nicht gebrauchen können...

Wenn Sie die Eigenschaft Property auf Private setzen, hat sie nur Gültigkeit innerhalb der Klasse. Setzen Sie daher die Eigenschaft auf Public, um sie in Ihrem Projekt einsetzen zu können.

 

 Methoden und Funktionen

Was als Methode bezeichnet wird, ist eigentlich eine Funktion oder eine Prozedur (als Public deklariert !). Damit können Sie Werte übergeben und zurückgeben. Die Programmierung ist im Prinzip die gleiche wie in einer "normalen" EXE auch.

Ein kleines Beispiel:

Public Sub ShowMessage (Name As String)
    MsgBox Name
End Sub
Aufgerufen wird in Ihrem Formular (EXE) so:
Dim X As New Testing
X.ShowMessage "Hallo, da bin ich"
Ein weiteres Beispiel für eine Funktion, die eine Summe aus den übergebenen Werten bildet:
Public Function Summe(ParamArray Ziffern() As Variant) As String
Dim Sum As Single
Dim i As Integer
  For i = 0 To UBound(Ziffern)
    Sum = Sum + Ziffern(i)
  Next i
  Summe = CStr(Sum)
End Function
Aufruf:
Dim X As New Testing
  Text1.Text = X.Summe(23,14,889)
 

 Ereignisse

Seit der Version 5.0 gibt es die Möglichkeit, Ereignisse für Klassen zu erstellen. Die Definition der Ereignisse ist einfach - Geben Sie im Prozedurkopf der Klasse das gewünschte Ereignis an:

Public Event Testen ()
Mit RaiseEvent Testen wird das Ereignis ausgelöst.

Im Beispiel sieht das so aus:
Public Event TestEreignis()
'
Public Sub EreignisTesten()

MsgBox "Das Ereignis 'TestEreignis' wurde ausgelöst!"

RaiseEvent TestEreignis 'Das Ereignis wird ausgelöst !

End Sub
Der Aufruf in der EXE (Formular) erfolgt so:
Private WithEvents Test1 As Testing
Es wird also eine neue Instanz erzeugt, allerdings muss dies noch im Ereignis Form_Load geschehen:

Sub Form_Load()
    Set Test1 = New Testing
End Sub
Plötzlich haben Sie im Visual Basic-Menü (linke obere Combobox) Zugriff auf das Ereignis test1 / Testereignis

Und genau dorthin kommt der Code
Private Sub test1_TestEreignis()
  Me.BackColor = vbBlack
  Me.Caption = "JETZT IST ALLES SCHWARZ"
End Sub
Aufgerufen wird dieses Ereignis mit einem CommandButton:

Call Test1.Ereignistesten
 

 Zusammenfassung und Beispiel

Das vorliegende Tutorial sollte nur als Einstiegshilfe für Anfänger gedacht sein. Es sollte zeigen, wie Sie eine einfache DLL erstellen und diese in Ihr Projekt einbinden. Der Vorteil einer eigenen DLL liegt klar auf der Hand: Sie brauchen umfangreiche Funktionen, Subs und Eigenschaften nicht bei jedem Projekt neu zu schreiben oder einzufügen.
Sie erstellen eine Active-X-DLL mit den gewünschten Ereignissen und greifen dann aus Ihrem Projekt heraus zu. Sinnvolle Beispiele für eigene DLLs wären Komponenten für Systemeigenschaften wie Arbeitsspeicher und Registry-Werte oder umfangreiche Funktionen für Grafikbearbeitungen. Auch immer wieder gebrauchte Algorithmen können Sie in DLLs verpacken.

Download  Beispielprojekt  ( 9 KB )
Aktualisiert: 12.02.2008, 20:49 Uhr Copyright © 2001 - 2010 by ST-software Navigation zurück  |  Navigation vorwärts  |  Zum Seitenanfang     
Ihre IP: 38.107.191.80 ·  Seite erstellt in: 0.341 Sekunden ·  Dateigröße:  14343 Bytes