@himitsu
Erst mal Danke für die Antwort, aber ich scheine mich nicht klar ausgedrückt zu haben. Es wird nicht die ganze
DLL in ein MMF ausgelagert und es geht auch nicht darum dass alle Anwendungen auf die selben Funktionen zurückgreifen, sondern um die Möglichkeit dass sich Prozesse gegenseitig eine Nachricht zukommen lassen wenn Daten ausgetauscht werden.
1. Eine Anwendung ruft die
DLL auf und nutzt die Funktion INIT mit dem Parameter Hnd in dem sich der Fenster-
Handle der aufrufenden Anwendung befindet.
2. Der
Handle wird in ein Array eingetragen und in ein MMF geschrieben.
3. Alle bekannten Mitglieder (siehe Array) erhalten eine Windows-Botschaft und sollten jetzt dieses MMF mit dem Array neu einlesen -> damit wissen wieder alle voneinander.
4. Die Anwendungen müssen selbstverständlich Windows-Botschaften verarbeiten können.
Das ist im Grossen und Ganzen der Mechanismus über den die Kommunikation realisiert wird.
Mein Ansinnen ist es Anwendern der
DLL die Arbeit zu erleichtern -> kein Fenster-
Handle heraussuchen und keine Botschaftsverarbeitung. Ich weiß auch gar nicht ob das alle Programmier- oder Skriptsprachen können. Die Wahrscheinlichkeit der Portierbarkeit scheint jedoch zu steigen wenn ich eine Callback verwenden kann. Das ist bisher gescheitert!
Lösungsansatz:
- Der Mechanismus mit den Botschaften klappt, hab ich ja getestet.
- DLLs können direkt keine Botschaften verarbeiten, ABER wenn man ihnen ein TForm mitgibt, die unsichtbar bleibt ....
- ... kann man sich deren Fenster-
Handle und Botschafts-Verarbeitung zu nutze machen.
- Wenn dann eine Botschaft eintrifft, kann man ja immer noch einen prozeduralen Zeiger (Callback) benutzen um der Anwendungsinstanz der die
DLL angehört eine Nachricht zukommen zu lassen.
Das werde ich jetzt mal ausprobieren, wenn's klappt poste ich den Quell-Code.