Ich bin mir fast sicher, dass du EM_STREAMIN nur innerhalb deiner Anwendung nutzen darfst.
Um es an einen anderen Prozeess schicken zu können,
müsstest du deinen Code von EditStreamInCallback/EditStreamOutCallback erst in
diesen Prozess injizieren,
denn was will das andere Programm mit einem Pointer für deinen Speicher, wenn es seinen eigenen Speicher hat und an jener Stelle nichts oder sonstwas liegen wird.
Zitat:
dwCookie := Longint( intoStream );
Wen sollen wir dafür steinigen?
UIntPtr oder NativeUInt
bzw.
IntPtr oder NativeInt
Aber auch TEditStream, TEditStreamCallBack, EditStreamInCallback und EditStreamOutCallback sind falsch deklariert.
DWORD_PTR ->
https://docs.microsoft.com/en-us/win...streamcallback
Es gibt nur eine Message, welche "irgendeinen" Speicher
selbstständig in den Zielprozess kopiert. (WM_COPYDATA)
Zusätzlich machen das auch noch die bekannten Text-Messages ala WM_SETTEXT.
Selbst wenn EM_STREAMIN/EM_STREAMOUT den Speicher von EDITSTREAM/TEditStream rüberkopiert, dann bleibt dennoch deine Funktion, und das von ihr Verwendete, bei dir.
Hast mal geschaut, ob es eine Variante mit
IStream gibt? (z.B. beim Clippboard gibt es Schnittstellen, welche damit auch prozesssübergreifend funktionieren)
https://www.quickmacros.com/forum/sh...t=em_streamout
Zitat:
To get RTF from other process, would need to create
dll file,
for example in C language, and inject it into that process, for example with a hook.
k.A. ob das mit dem FileHandle hier funktioniert, aber vermutlich wird EM_STREAMIN/EM_STREAMOUT kein DuplicateHandle benutzen, womit "dein"
Handle drüben ungültig wäre.
https://www.codeproject.com/Question...icateHandle-fu