Eigene Schnittstellen Funktionen aus DLL aufrufen

Schnittstelle (DLL): Eigene Schnittstellen Funktionen aus DLL aufrufen

Das Kommando ermöglicht es, eigene Schnittstellen Funktionen aufzurufen. Die Funktionen müssen in einer oder mehreren DLLs zur Verfügung gestellt werden.

Nach Eingabe des Kommandos erscheint das dargestellte Dialogfenster mit folgenden Optionen:

DLL Datei

Neue Datei laden:  Wird der Button angeklickt, so erscheint ein Dateiwahlfenster in dem die DLL-Datei auszuwählen ist, die geladen werden soll.

DLL entfernen: In der aufklappbaren Liste werden die Namen aller DLLs angezeigt, die geladen sind. Wird der Button angeklickt, so wird die in dem Eingabefeld angezeigte DLL entfernt.

DLL-Funktionen

Funktion aufrufen: Wird der Button angeklickt, so wird die Funktion aufgerufen, deren Name in dem Eingabefeld angegeben ist. Beim erstmaligen Aufruf der Funktion muss zuvor in der Liste der DLL-Namen die DLL selektiert werden, in der die Funktion enthalten ist. Wird die Funktion in der DLL gefunden, so wird deren Adresse gespeichert und der Funktionsname in der aufklappbaren Liste angezeigt. Die Funktion kann dann mehrfach aufgerufen werden, bis die zugehörige DLL entfernt wird.

 

Beim erstmaligen Aufruf des Kommandos wir geprüft, ob in dem „bin“-Verzeichnis von MAKROS eine Datei „maka_interface.ini“ mit Einträgen des folgenden Typs existiert:

#dll kf  funktion   verzeichnis

„kf“ ist hierin die Typkennzahl der Funktion, „funktion“ der Name einer  Funktion und „verzeichnis“ der Pfadname der DLL in der die Funktion enthalten ist.

Zum Beispiel:

#dll 0 funct1 G:\boege\makrosa\testdll\dll1\debug\dll1.dll

#dll 0 funct2 G:\boege\makrosa\testdll\dllmfc\debug\dllmfc.dll

#dll 1 testInterface G:\boege\makrosa\testdll\interf\debug\interface.dll

Werden entsprechende Einträge gefunden, so werden die darin angegebenen DLLs sofort geladen und die Einsprungstellen der Funktionen ermittelt und gespeichert. Die DLLs und Funktionsnamen werden in die entsprechenden Listen des Dialogfensters eingetragen und können nachfolgend aufgerufen werden.

Prototyp der aufgerufenen Funktionen

Die aufgerufenen Funktionen müssen den folgenden Prototyp aufweisen:

extern "C"

void Interface(void *pCWnd, StructData *data, char *file, nt kz, int kzf, void *p);

 

Die Parameter haben folgende Bedeutung:

pWnd: Zeiger auf das MAKROS Protokollfenster, dieses sollte ggf. als Parent window verwendet werden,

data:  Zeiger auf eine Struktur mit allen Projektdaten, die Struktur StructData ist in der Quelldatei „interface.h“ genauer beschrieben,

file: Titel der zu erzeugenden Ausgabedatei,

kz: bei diesem Funktionstyp nicht verwendete Kennzahl,

kzfunkt: Kennzahl des Funktionstyps, muss 1 sein bei diesen Funktionstyp,

p: bei diesem Funktionstyp nicht verwendeter Zeiger auf eine Struktur.

 

Ein Musterbeispiel für eine Funktion diesen Typs ist in dem Verzeichnis „dll“ enthalten. Vergleiche auch Kapitel 11.

Wir eine Funktion diesen Typs aufgerufen, so wird zunächst angefragt, ob Daten im Arbeitsspeicher noch gesichert werden müssen, da die Daten für die Schnittstelle aus den Binärdateien des aktuellen Projektes gelesen werden. Danach ist der Filetitel für die Schnittstellendatei in einem Dateiwahlfenster anzugeben, dieser Titel wird als Parameter 3 an die aufgerufene Funktion übergeben