Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#17

AW: Text in ein DBRichEdit einfügen per SendMessage()

  Alt 6. Feb 2021, 05:16
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Feb 2021 um 05:36 Uhr)
  Mit Zitat antworten Zitat