AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

fremdes RichEdit auslesen?

Ein Thema von API · begonnen am 19. Apr 2005 · letzter Beitrag vom 12. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

fremdes RichEdit auslesen?

  Alt 19. Apr 2005, 11:22
moin,

Möchte eine fremdes RichEdit auslesen mit allen Formatierungen.

Wie stelle ich das an??

Bitte keine WM_GETTEXT Antworten.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: fremdes RichEdit auslesen?

  Alt 19. Apr 2005, 12:00
Hallo!

Suche mal nach: Hier im Forum suchenEM_STREAMOUT. Wobei das fuer ein RichEdit in einem anderen Prozess nicht einfach sein wird.
Thomas
  Mit Zitat antworten Zitat
robert23

Registriert seit: 16. Aug 2006
20 Beiträge
 
#3

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 12:09
Ich habe jetzt genau die selbe Frage und wollte deswegen nochmal den Thread beleben.
Weiß jemand definitiv ob es mit EM_Streamout möglich ist ein RichEdit eines anderen Programmes
auszulesen. Oder is dafür ein Hook erforderlich.
Wäre für jede Hilfe dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 12:20
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
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
robert23

Registriert seit: 16. Aug 2006
20 Beiträge
 
#5

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 13:56
hmm...es kann vorkommen das ich mehrere RichEdit's auslesen muss (meine Anwendung mehrmals starte)
Dadurch ist ja ein in die quere kommen von 2 Auslesungen in der zwischenablage nicht zu verhinden,
kann man das irgendwie managen ( also den daten ne ID geben um sie zuzuorden oder so) oder steh
ich da wieder vor einem unlösbaren problem?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 13:59
Wenn die Anwendungen alle von dir sind, dann hast du doch alle Möglichkeiten der Interprozesskommunikation: MMF, Pipes, WM_COPYDATA, Dateien, Registry, ...
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
robert23

Registriert seit: 16. Aug 2006
20 Beiträge
 
#7

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 14:14
Ok, um die ganze Sache mal klarer zu gestalten.
Ich habe _ein_ Programm, das mehrere fremde Programme, die alle ein RichEdit besitzen,
auslesen soll. Jedoch bearbeitet mein Programm jedes RichEdit individuell, also müssen die
ausgelesen Daten eindeutig zuordbar sein.
Ich habe über google eine Hook Tutorial als pdf gefunden wo die Themen die Luckie ansprach
alle kurz angerissen sind. Da als neuer nun zu wissen welche wohl die für mich passende
Anwendung ist ist schwer.
Könnt ihr mir da viell. noch ein bissl weiter helfen?
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#8

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 14:38
Zitat von robert23:
Da als neuer nun zu wissen welche wohl die für mich passende Anwendung ist ist schwer.
Wie bereits erwähnt, ist das eigentliche Problem, dass man in den Zielprozessen Code benötigt (EditStreamCallback) der mit deiner Anwendung kommuniziert. Hooks werden oft missbraucht um Code in den Zielprozess zu laden. Es stellen sich aber noch weitere Fragen. Müssen zum Beispiel anderen Prozessorarchitekturen unterstützt werden (eine x86-Hook-DLL wird nicht in native x64/IA64/Alpha-Prozesse geladen), und so weiter. Alles in allem ist das eine größere Aufgabe, die auch nicht von Profis (und schon gar nicht 'Neulingen' auf diesem Gebiet) 'mal eben' entwickelt wird.

Kurz: praktisch machbar, aber sehr aufwändig - und je nach Anforderungen nicht ausschließlich mit Delphi für Win32 lösbar.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: fremdes RichEdit auslesen?

  Alt 18. Aug 2006, 15:40
Wenn du die Formatinformationen nicht brauchst, dann geht's auch noch recht einfach:
Delphi-Quellcode:
function GetForeignWindowText(wnd: HWND): string;
var
  len: Integer;
begin
  len := SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0);
  SetLength(Result, len);
  SendMessage(wnd, WM_GETTEXT, len + 1, Integer(@Result[1]));
end;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
robert23

Registriert seit: 16. Aug 2006
20 Beiträge
 
#10

Re: fremdes RichEdit auslesen?

  Alt 9. Sep 2006, 19:20
Ok, ich greife jetzt wie von Flocke vorgeschlagen auf das RichEdit zu.
Nun ist das auszulesende RichEdit eine Art Log-Fenster. Wenn ich aller 500ms
die Funktion zum auslesen des Textes aufrufe reicht das schon.
Aber dies ist keine so guter Weg wenn es dann mal bis zu 12 verschiedene
RichEdits sind die ich alle auslese.

Gibts da ne möglichkeit das Eventabhängig zu machen und nicht immer nur starr
aller 500ms zu checken?
(Wie gesagt, das RichEdit gehört einer fremden Anwendung)

Robert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz