Shared Memory



  • Ich habe einen Dienst der mit einer weiteren Anwendung kommuniziert. Der Dienst sendet an das Programm eine Nachricht. Dabei möchte ich im LPARAM den Zeiger auf ein String übergeben. Nun, wie kann ich dies realisieren? Der Dienst reserviert dynamisch Speicher für den Textbuffer und sendet im LPARAM, den Zeiger auf diesen Buffer. Im Moment ist es nur wichtig, dass ich darauf read-only zugreifen kann.



  • Mit direkten Zeigern wird das Aufgrund der vercshiedenen Adressräume nichts. Schau Dir aber mal WM_COPYDATA an.



  • Ansonsten kannst du das auch mit FileMapping Objekten machen. Das hab ich mal benutzt - steht sogar hier im Forum in den FAQs. Wenn du Lust hast, schau mal in die VCL-FAQ unter MouseHook.



  • An FileMapping habe ich auch zuerst gedacht. In diesem Fall laufen die Anwendungen aber unter verschiedenen Konten. Das kann leicht zu Zugriffsproblemen führen. Klar, man auch auch einfach den entsprechenden ACE in die DACL des SDs eintragen. WM_COPYDATA scheint mir aber wesentlich einfacher zu sein, zumal nur in eine Richtung übertragen wird.


Anmelden zum Antworten