Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hauptprogramm Daten an DLL senden (https://www.delphipraxis.net/151847-hauptprogramm-daten-dll-senden.html)

C0pa 3. Jun 2010 16:27


Hauptprogramm Daten an DLL senden
 
Vielleicht fehlt mir einfach gerade die Idee aber:
derzeit sendet meine DLL immer Daten an das Hauptprogramm mit WMCopyData. Funktioniert auch. Nun soll meine Hauptanwendung aber auch Daten bzw. Einstellungen treffen können und diese weiter an die DLL senden können. Jemand eine Idee wie man das machen könnte?!

Zacherl 6. Jun 2010 18:57

AW: Hauptprogramm Daten an DLL senden
 
Am besten du verwendest Events zusammen mit Memory Mapped Files.

C0pa 7. Jun 2010 15:18

AW: Hauptprogramm Daten an DLL senden
 
Ja nur an welches Handle sende ich ein z.B. notify Event bei der DLL um die MMF zu lesen?

himitsu 7. Jun 2010 15:24

AW: Hauptprogramm Daten an DLL senden
 
Du kannst dir ja in der DLL ein Message-Only-Windows erstellen und das daran senden.
Oder wenn die DLL einen eigenen Thread betreibt, dann PostThreadMessage.

Zacherl 7. Jun 2010 15:32

AW: Hauptprogramm Daten an DLL senden
 
Zitat:

Zitat von C0pa (Beitrag 1026403)
Ja nur an welches Handle sende ich ein z.B. notify Event bei der DLL um die MMF zu lesen?

An gar kein Window Handle. Du erstellst dir mit CreateEvent() ein Event, welches du dann mit SetEvent() aktivierst, sobald Daten ankommen. Die DLL wartet mit WaitForSingleObject() auf das Event und setzt dieses unmittelbar danach mit ResetEvent() zurück und liest die Daten aus dem MMF.

shmia 7. Jun 2010 16:18

AW: Hauptprogramm Daten an DLL senden
 
Wieso nicht einfach eine ganze normale Funktion/Prozedur der DLL aufrufen?
Über die Parameter lassen sich jede Menge Daten übergeben.
Da die Anwendung und die DLL im gleichen Prozessspeicher liegen erübrigen sich auch solche Dinge wie z.B. MemoryMappedFiles.

Auch die Benachrichtigung über Windows-Messages ist viel zu umständlich.
Man bekommt das Gleiche viel einfacher über Callback-Funktionen.

Zacherl 7. Jun 2010 17:50

AW: Hauptprogramm Daten an DLL senden
 
Zitat:

Zitat von shmia (Beitrag 1026439)
Wieso nicht einfach eine ganze normale Funktion/Prozedur der DLL aufrufen?

Deine Annahme, dass sich die DLL im selben Speicherbereich befindet ist leider inkorrekt :D Er will einen Hook schreiben, der wie ein Sniffer Pakete protokolliert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz