Autor Beitrag
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Do 11.10.12 00:03 
Liebe Experten,

ich habe ein Programm A, das erzeugt mehr oder weniger zyklisch Dateien.

Diese Dateien soll nun ein Programm B auswerten. (Ein gemeinsames Programm geht aus bestimmten Gründen nicht.)

Wenn A eine Datei fertig gemacht hat, dann sendet es eine Message an B (per PostMessage). Geht bestens.

Mein Problem: Bisher war der Ablagepfad der Datei fest gegeben und die Dateinamen waren fortlaufen nummeriert. In der Message habe ich einfach die laufende Nummer als Longword (im lParam) übergeben. Das muss jetzt allgemeiner sein, ich muss also Pfad+Dateinamen von A an B senden. Wie macht man das richtig???

Vergeblicher Versuch:
Pfad+Dateiname als Pchar, dann den Pointer darauf im lParam mit der Message verschicken. Da erhalte ich in B eine Access Violation. Beim Verschicken eines ^Integer gibt es das zwar (wohl zufällig) nicht, aber die Integerzahl kommt auch nicht an, also wohl auch Zugriff auf einen falschen Speicher.

Mir bekannte Lösungsmöglichkeit:
Ich hatte schon einmal große Datenblöcke per FileMapping zwischen Programmen ausgetauscht. Aber das ist doch für diese elementare Aufgabe viel zu umständlich.

Also, wie macht man so etwas richtig? Da muss es doch einen Mechanismus bei Windows geben.

Ich hoffe auf Tipps,

Grüße GuaAck
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Do 11.10.12 01:14 
Mit wm_CopyData.

Siehe z. B. hier: stackoverflow.com/qu...n-target-application

Für diesen Beitrag haben gedankt: GuaAck
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 11.10.12 03:17 


Zuletzt bearbeitet von hathor am Do 11.10.12 13:23, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: GuaAck
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 11.10.12 09:26 

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)

Für diesen Beitrag haben gedankt: GuaAck
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Do 11.10.12 21:56 
Danke an Alle,

mein Fehler war wohl, dass ich nicht WM_COPYDATA genommen habe, sondern eine eigene Messageid (per registerwindowmessage).

Gruß GuaAck