Per se sollte es ja gehn, auch zwischen x68 und x64.
Erstmal das Einfachste prüfen:
* Dein Code, welchen wir nicht kennen, ist wirklich korrekt?
* Du prüfst auch die Parameter/Rückgabewerte?
z.B. FindWindow usw. finden das Ziel auch
Ja, bei WM_COPYDATA steht nur war vom Result und nichts bezüglich weiterer Auswertungen, wie z.B. GetLastError, aber versuchen kann man's ja mal.
Delphi-Quellcode:
SetLastError(ERROR_CURRENT_DIRECTORY); // es ginge auch SetLastError(NO_ERROR), aber so haben wir war zur verifications, ob GetLastError hier wirklich nichts bewirkt
if not BOOL(SendMessage(DestWindowHandle, WM_COPYDATA , WPARAM(Self.Handle), LPARAM(@MyCopyDataStruct)) then // oder besser SendMessageTimeout
RaiseLastORError;
* Die Prozesse laufen nicht mit unterschiedlichen Rechten?
z.B. eine Restricted App versucht nciht was an eine Admin-App zu schicken?
* Am einfachsten laufen beide im selben Nutzeraccount?
Nicht vieleicht in unterschiedlichen Sessions oder Dergleichen.
Es gab noch irgendwie was, womit man "gesperrte" Messages aus anderen Prozessen erlauben kann, aber ich finde da nichts zu, vor allem nicht bezüglich WM_COPYDATA (welches als Austauschformat, vermutlich eh nicht gesperrt wird)