WWW
Abbildung 13.2 ApiViewer 2004
Alternativ finden Sie unter der folgenden Adresse eine recht umfangreiche API-Referenz mit zahlreichen
Codebeispielen in Visual Basic:
http://vbnet.mvps.org/api/apis/index.html
Doch zurück zu den API-/DLL-Deklarationen. Was die einzelnen Parameter bedeuten, soll der folgende
Abschnitt klären.
Einbinden der Deklaration
Bevor eine API-Funktion unter Access verwendet werden kann, muss sie deklariert werden, d.h., Sie teilen
Access mit, welche Funktion in welchem Modul und mit welchen Parametern aufzurufen ist. Bei der Dekla-
ration sollten Sie besondere Sorgfalt an den Tag legen, da falsch definierte Parameter zu einem totalen Pro-
grammabsturz führen können.
Funktionsname
DLL-Name Parameterliste
Rückgabewert
Alias-Name
Abbildung 13.3 Aufbau einer Declare-Anweisung für API-Aufrufe
Funktionsname Unter diesem Namen ist die Funktion in Ihrem Visual Basic-Programm verfügbar. Lassen
Sie den Alias-Parameter weg, muss der Name exakt dem Funktionsnamen in der DLL ent-
sprechen.
831
API- und DLL-Einbindung
HINWEIS
Kapitel 13: Programmschnittstellen
DLL-Name Der Name der DLL, in der sich die Funktion befindet. Bei System-DLLs lassen Sie die
Extension weg. Vermeiden Sie Pfadangaben! DLLs werden im Programm-Verzeichnis,
dem Windows-Verzeichnis und in allen Verzeichnissen mit Suchpfad aufgespürt.
Alias-Name Weicht der Funktionsname von der Bezeichnung in der DLL ab, müssen Sie den Alias-
Parameter aufführen. Weitere Gründe für dieses Vorgehen:
Der Funktionsname in der DLL beginnt mit einem Unterstrich, der in Access Basic
nicht erlaubt ist (z.B. _lwrite).
Der Funktionsname in der DLL ist in VBA bereits vergeben (z.B. MKDIR).
Sie möchten ein und dieselbe Funktion mit verschiedenen Namen und Parametern
importieren (z.B. SendMessage).
Sie importieren eine Funktion/Prozedur mit String-Parametern.
Sie importieren die Funktion/Prozedur über ihre Ordinalzahl.
Parameterliste Die Umsetzung der Deklarationsparameter mit Basic-Variablentypen.
Rückgabewert Der Rückgabewert der Funktion. Handelt es sich um eine Prozedur, ist natürlich kein
Rückgabewert erforderlich.
32-Bit-DLLs unterscheiden zwischen Groß-/Kleinschreibung im Funktionsnamen. Wundern Sie sich also nicht,
wenn eine Funktion in der angegebenen DLL nicht gefunden werden kann. In diesem Fall wurde vermutlich die falsche Schreib-
weise gewählt.
Abbildung 13.4 Falsche Schreibweise führt zu Laufzeitfehler
Bei einer einzubindenden Prozedur gilt prinzipiell das Gleiche wie für Funktionen: anstatt Function schrei-
ben Sie einfach Sub und lassen den Rückgabewert weg. Ebenso verfahren Sie mit API-Funktionen, deren
Rückgabewert Sie nicht interessiert. Deklarieren Sie diese einfach als Sub (wird häufig bei GDI-Funktionen
angewendet).
In der obigen Aufzählung wurde bereits erwähnt, dass bei Funktionen mit Stringparametern immer die
Alias-Klausel nötig sei. Dies allerdings bedarf einer gesonderten Erklärung: Die Übergabe von Strings an
Win32-DLLs erfolgt immer im ANSI-Format, Access arbeitet aber intern mit dem Unicode-Zeichensatz,
der jedes Zeichen mit zwei Byte codiert (dadurch sind bedeutend mehr Zeichen darstellbar dies ist für
Fremdsprachen z.B. im asiatischen Raum wichtig). Beim Aufruf der API-Funktion übernimmt Access die
Umwandlung zwischen Unicode und ANSI. Zur Auswahl der ANSI-Variante einer DLL-Funktion wird an
den Namen ein »A« angehängt!
832

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.