![]() |
Funktion zur Textausgabe gesucht
Ich suche die funktion mir der z.B. der InternetExplorer den Text der InternetSeiten anzeigt. (ich hoffe doch, dass es sowas gibt)
Desweiteren suche ich die Funktion, mit der der Text in Edits, Memos, usw. ausgegeben wird, und die funktion mit der z.B. der Text von Menüs ausgegeben wird. (Falls das nicht alles die gleichen sind) Ich habe herausgefunden, dass es diese Funktionen nicht sind: TextOutA, TextOutW, DrawTextExA, DrawTextExW, PolyTextOutA, PolyTextOutW, TabbedTextOutA, TabbedTextOutW Da fragt man sich bestimmt: Und wozu brauchst du das? Ganz einfach: Ich will die Funktionen 'abfangen' (per API-Hook) und 'loggen' wo was ausgegeben wurde, damit ich z.B. das wort unter dem Mauszeiger herausfinden kann. (Labels zeigen ihren Text mit TextOut an, da funktioniert das auch schon ganz prächtig ... ^^) |
Re: Funktion zur Textausgabe gesucht
Zitat:
Code:
Ich schein aber irgendwie dein Problem nicht ganz erkannt zu haben, oder :stupid:
edit1.text := 'BliBla' ;
Gruß, Tom |
Re: Funktion zur Textausgabe gesucht
Zitat:
Wenn du so: edit1.text := 'xyz'; etwas in eine edit 'schreibst' wird der Text dadurch noch nicht angezeigt (im endeffekt schon, aus den daraus resultierenden Ereignissen ^^). Im Hintergrund laufen andere dinge ab: Durch das ereignis (änderung des Textes) wird irgendeine Funktion (die ich eben suche), die (sehr sicher) aus der API kommt, aufgerufen, welche dann den Text (der bisher nur virtuell war) auf den Bildschirm bringt. Z.B. bei Labels wird die Funktion TextOut verwendet, um den Text anzuzeigen, aber bei Edits aber nicht, und ich hab keine Ahnung welche funktion das sein könnte ... daher frag ich ja ^^ |
Re: Funktion zur Textausgabe gesucht
wenn ich das richtig verstehe möchtest du z.b. von
Code:
"bla hallo, wie gehts?" bekommen?
<html>
<body> bla hallo, wie gehts?</body>/html> edit: ich hab mal ne funktion gefunden und für eins meiner projekte erweitert:
Delphi-Quellcode:
function TAuswerten.PlainText(strHTML: string): string;
var P: PChar; InTag: Boolean; begin // <head> löschen while (Pos('<head',strHTML) > 0) and (Pos('</head>',strHTML) > Pos('<head',strHTML)) do Delete(strHTML, Pos('<head',strHTML), (Pos('</head>',strHTML) + 7) - Pos('<head',strHTML)); // <script> löschen while (Pos('<script',strHTML) > 0) and (Pos('</script>',strHTML) > Pos('<script',strHTML)) do Delete(strHTML, Pos('<script',strHTML), (Pos('</script>',strHTML) + 9) - Pos('<script',strHTML)); // <style> löschen while (Pos('<style',strHTML) > 0) and (Pos('</style>',strHTML) > Pos('<style',strHTML)) do Delete(strHTML, Pos('<style',strHTML), (Pos('</style>',strHTML) + 8) - Pos('<style',strHTML)); // strHTML := StringReplace(strHTML,' ',' ',[rfReplaceAll]); // Alle tags werden durch leerzeichen ersetzt strHTML := StringReplace(strHTML,'>','> ',[rfReplaceAll]); P := PChar(strHTML); Result := ''; InTag := False; repeat case P^ of '<': InTag := True; '>': InTag := False; #13, #10: ; // nichts machen else if not InTag then begin if (P^ in [#9, #32]) and ((P+1)^ in [#10, #13, #32, #9, '<']) then else Result := Result + P^; end; end; Inc(P); until (P^ = #0); // HTML spezial umwandeln Result := StringReplace(Result, 'ä', 'ä', [rfReplaceAll]); Result := StringReplace(Result, 'ö', 'ö', [rfReplaceAll]); Result := StringReplace(Result, 'ü', 'ü', [rfReplaceAll]); Result := StringReplace(Result, 'ß', 'ß', [rfReplaceAll]); Result := StringReplace(Result, '', ' ', [rfReplaceAll]); Result := StringReplace(Result, '*', ' ', [rfReplaceAll]); Result := StringReplace(Result, '>', '>', [rfReplaceAll]); Result := StringReplace(Result, '<', '<', [rfReplaceAll]); { Result := StringReplace(Result, '"', '"', [rfReplaceAll]); Result := StringReplace(Result, ''', '''', [rfReplaceAll]); Result := StringReplace(Result, '&', '&', [rfReplaceAll]); } end; |
Re: Funktion zur Textausgabe gesucht
Zitat:
Aaaallsso ... wie ihr bestimmt wisst, kann man mit z.B. der Funktion TextOut Text auf seine Form bringen. Nun stellt euch vor, ihr seid ein Label, und ihr sollt nun den euch zugewiesenen Text anzeigen. Wie tut ihr das? Ganz einfach: Mit TextOut(DC, X, Y, 'hallo!', 5); (mit dem einzigen unterschied, dass labels DrawText verwenden, was aber aufs gleiche rauskommt) So, und nun stellt euch vor, ihr seid ne Edit, und ihr sollt den euch zugewiesenen Text anzeigen. Wie tut ihr das? Und genau das will ich wissen ... ich will nicht wissen wie ihr es tun würdet, sondern wie die Edit es tut. Alles unklar? Gut ... |
Re: Funktion zur Textausgabe gesucht
Edits zeichnen ihren Text auch :gruebel: Ich kann mich allerdings nicht ganz in ein Edit hineinversetzen, scheint mir :(
|
Re: Funktion zur Textausgabe gesucht
Irgendwie hab ich das Gefühl das manche hier die Beiträge nicht lesen. Wenn man genau liest wird man feststellen das c113plpbr einfach nur die Funktion sucht mit welcher intern bei edits etc der text ausgegeben wird..
@c113plpbr: Die Methode zu hooken halte ich für keinen sinnvollen Ansatz. Den Shoutboxreader den ich geschrieben hab, der schreibt den satz beispielsweise nicht im ganzen sondern zerteilt den in viele kleine stücken so das du ihn mit deinem apihook nie erhalten würdest. Ich denke so wie babylon das ganze macht ist der ansatz besser - es verwendet eine art ocx um zu erkennen welcher text auf dem canvas des dargestellt wird... Wenn du dennoch nicht davon abweichen willst das ganze mit apihook zu lösen so empfehle ich dir erstmal bei den programmen zu schauen welche dll's sie verwenden. Anschließend kannst du dann diese nach Funktionen durchsuchen bzw. dir alle funktionen derer auflisten lassen |
Re: Funktion zur Textausgabe gesucht
@c113plpbr
Du hast doch D8 Architekt :wink: Dann schau doch einfach in dein Delphi7-Verzeichniss unter sources dir den Code vom TEdit an :roll: |
Re: Funktion zur Textausgabe gesucht
Zitat:
Zitat:
|
Re: Funktion zur Textausgabe gesucht
Soweit ich weiß ist das im OS definiert und folglich kaum ansprechbar.
Ratte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz