Zugriff auf Adresse mit 2 Programmen?
-
Hallo! Normaler weise ist es ja nicht möglich den Adressraum anderer Programme zu benutzen. Habe ich schon probiert, ging nicht. Ich möchte aber zwei programme schreiben, die miteinander kommunizieren. Wie kann ich es denn sonst realisieren? Kann man eine Adresse irgendwie freigeben oder so?
-
Inter Process Kommunikation !?
-
Doch, das ist schon möglich.
da bieten sich unter windows verschiedene möglichkeiten.Du kannst z.B. die WM_COPYDATA - Nachricht verwenden, um Daten zwischen zwei Prozessen auszutauschen.
Etwas schneller sollte es meiner Meinung nach sein,
sofern du mit einer DLL hantieren willst, Shared Data Segments zu benutzen.Google hilft dir in beiden Fällen weiter.
(Leider habe ich die Sourcen nicht mehr, sonst würde ich dir ein kleines Beispiel mit Shared-Data-Segments pasten.)
-
Shared Memory, Memory Mapped File mal so als Stichwort.
Ist natürlich ne unsichere Sache die auch irgendwie syncronisiert werden sollte.
-
MailSlots...
-
http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx
Was sich davon eignet, kommt auf deine Aufgabe drauf an.
Mit CreateFileMapping und MapViewOfFile bist Du am nächsten dran - der gleiche physische Speicher wird in beide Prozesse gamapt - allerdings normalerweise auf unterschiedliche Adressen.
-
Wenn Du einen Datenaustausch zwischen verschiedenen Programmen (Prozessen) willst, kannst Du diesen einfach mit SendMessage(hwnd,ID_XXX,idWas,iXXX) machen. Hierfür brauchst Du die Fensterhandles (hwnd) der beteiligten Programme, dann geht alles weitere problemlos, jedenfalls für Integers und Characters. Direkt kommst Du schwer an fremde Datenbereiche heran. Ansonsten kann man jederzeit über eine sharable Datei oder DDE Daten austauschen.