| |

Fortgeschrittene ProgrammierungWertaustausch EXE <-> ActiveX Dll | |  | Autor: Wöllmi | Datum: 09.01.06 13:42 |
| Hallo zusammen,
ich brauche Eure Hilfe zu folgendem Thema:
Um eine EXE größenmäßig nicht zu stark aufzublähen und um einen
zusammenhängenden Themenblock zu kapseln, habe ich ein Projekt in
eine Exe (Standard-EXE) und eine DLL (AcrtiveX Apartment Threaded)
gesplittet. Die DLL wird immer mit Start der EXE instanziert und erstmalig initialisiert.
Um eine Interaktion zwischen EXE und DLL zu initieren, werden Events
genutzt. Dies klappt auch ganz gut.
Nun bin ich an dem Punkt angekommen, wo ich in der DLL den Wert einer in der
EXE verwendeten Globalen Variablen zur Ablaufsteuerung benötige. D.h.
in der EXE ist der Wert naürlich ohne Probleme bekannt, auswertbar und veränderbar.
Die DLL dagegen kennt weder Variable noch Wert.
Erschwerend kommt hinzu, daß in dieser Variablen auch Änderungen, die aus der
Abarbeitung in der DLL resultieren abgelegt werden sollen.
Es soll also ein Prozedere resultieren, welches sowohl der DLL als auch der EXE
eine gemeinsam bekannte und änderbare Variable bereitstellt.
Die erste Idee waren Zeiger, also einfach der DLL bei der Initialisierung die Adresse
der in der EXE global vorhandenen Variablen übergeben und dann mit CopyMemory arbeiten. 'DLL
public p_SYSVariable as Long
Public Property Let mSYSFlags(ByRef SYSFlags As Long)
p_SYSVariable = VarPtr(SYSFlags) 'Verweis auf ext
' Systemvariable setzen
End Property 'In der EXE
clsDLL.mSYSFlags = GlobaleVariable Und die Adresse wird auch korrekt an die DLL übergeben. Nun stelle ich jedoch fest,
daß der Wert der Variablen weder Lesbar noch beschreibbar ist.Public Declare Sub CopyMemoryRead Lib "kernel32" Alias "RtlMoveMemory" ( _
Destination As Any, ByVal Source As Long, ByVal Length As Long)
Public Declare Sub CopyMemoryWrite Lib "kernel32" Alias "RtlMoveMemory" (ByVal _
Destination As Long, Source As Any, ByVal Length As Long) Der Wert der Variablen läßt sich abfragen, stimmt aber nicht mit dem Wert
in der EXE überein.
Hm, liegt wohl an den getrennten Datensegmenten.
Hat jemand einen brauchbaren Lösungsansatz für eine derartige Schnittstelle?
Ich könnte ja auch hier ein Event verwenden, welches der EXE jede Änderung seitens
der DLL mitteilt und umgekehrt in der EXE den Wert der globalen Variablen bei Änderung der DLL als Eigenschaft bekannt geben.
Dies geht zwar, doch wenn mehrere Variablen derart verwendet werden sollen
steigt der Verwaltungsaufwand und die Eventanzahl ja nicht unerheblich.
Wie macht man so etwas richtig?
Danke schon jetzt
Variablen
Tschaui
Woellmi  |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|