Bei diesen Ansätzen hast du immer das Problem, dass die andere Anwendung einen anderen Adressraum hat als deine. Für EM_STREAMOUT brauchst du ein Callback, den Code dafür müsstest du irgendwie in den fremden Adressraum injezieren.
Vielleicht reicht dir ja ein Ansatz über die Zwischenablage. Deren alter Inhalt wird dabei allerdings zerstört. Außerdem funktioniert's nicht bei Texten > 65535 Zeichen Länge.
Delphi-Quellcode:
SendMessage(rh, WM_SETREDRAW, 0, 0);
try
sel := SendMessage(rh, EM_GETSEL, 0, 0);
SendMessage(rh, EM_SETSEL, 0, -1);
SendMessage(rh, WM_COPY, 0, 0);
SendMessage(rh, EM_SETSEL, LOWORD(sel), HIWORD(sel));
finally
SendMessage(rh, WM_SETREDRAW, 1, 0);
end;
// Jetzt den Inhalt der Zwischenablage auswerten