AGB  ·  Datenschutz  ·  Impressum  







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

Funktion zur Textausgabe gesucht

Ein Thema von c113plpbr · begonnen am 5. Jun 2004 · letzter Beitrag vom 6. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#1

Funktion zur Textausgabe gesucht

  Alt 5. Jun 2004, 17:55
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 ... ^^)
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Funktion zur Textausgabe gesucht

  Alt 5. Jun 2004, 19:23
Zitat von c113plpbr:
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.
Also ich versteh nicht ganz was du da für ne spezielle Funktion suchst... Ein Edit-Feld füllst du einfach mit
Code:
edit1.text := 'BliBla' ;
Ich schein aber irgendwie dein Problem nicht ganz erkannt zu haben, oder

Gruß,
Tom
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Funktion zur Textausgabe gesucht

  Alt 5. Jun 2004, 21:55
Zitat von Jelly:
Ich schein aber irgendwie dein Problem nicht ganz erkannt zu haben, oder
Nicht wirklich ...
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 ^^
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#4

Re: Funktion zur Textausgabe gesucht

  Alt 5. Jun 2004, 22:01
wenn ich das richtig verstehe möchtest du z.b. von
Code:
<html>
<body>
bla
hallo, wie gehts?</body>/html>
"bla hallo, wie gehts?" bekommen?

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,
'&auml;', 'ä', [rfReplaceAll]);
Result := StringReplace(Result,
'&ouml;', 'ö', [rfReplaceAll]);
Result := StringReplace(Result,
'&uuml;', 'ü', [rfReplaceAll]);
Result := StringReplace(Result,
'&szlig;', 'ß', [rfReplaceAll]);
Result := StringReplace(Result,
'', ' ', [rfReplaceAll]);
Result := StringReplace(Result,
'*', ' ', [rfReplaceAll]);
Result := StringReplace(Result,
'>', '>', [rfReplaceAll]);
Result := StringReplace(Result,
'<', '<', [rfReplaceAll]);

{ Result := StringReplace(Result,
'&quot;', '"', [rfReplaceAll]);
Result := StringReplace(Result,
'&apos;', '''', [rfReplaceAll]);
Result := StringReplace(Result,
'&amp;', '&', [rfReplaceAll]);
}
end;
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Funktion zur Textausgabe gesucht

  Alt 6. Jun 2004, 00:15
Zitat von StefanDP:
wenn ich das richtig verstehe möchtest du z.b. von
Code:
<html>
<body>
bla
hallo, wie gehts?</body>/html>
"bla hallo, wie gehts?" bekommen?
Nein. Warum versteht ihr mich alle falsch ...

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 ...
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Funktion zur Textausgabe gesucht

  Alt 6. Jun 2004, 00:19
Edits zeichnen ihren Text auch Ich kann mich allerdings nicht ganz in ein Edit hineinversetzen, scheint mir
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Funktion zur Textausgabe gesucht

  Alt 6. Jun 2004, 00:29
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Funktion zur Textausgabe gesucht

  Alt 6. Jun 2004, 10:41
@c113plpbr

Du hast doch D8 Architekt

Dann schau doch einfach in dein Delphi7-Verzeichniss unter sources dir den Code vom TEdit an
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Funktion zur Textausgabe gesucht

  Alt 6. Jun 2004, 17:45
Zitat von SirThornberry:
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 suche ja eigentlich nur nach einzelen worten, nicht nach ganzen sätzen ... ^^
Zitat von SirThornberry:
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
Na dann versuch mal z.B. die User32.dll nach solchen funktionen zu durchsuchen ... ich habs versucht ... bin aber gescheitert ^^, was aber daran liegen konnte, dass die Programme selbst, mit dem anzeigen nichts zu tun haben. Ich hab auch schon im quellcode von TCustomEdit gesucht, aber ich bin zu dem ergebnis gekommen, dass alles, wirklich alles über windowmessages abläuft, und dass schätzungsweise das system das anzeigen komplett übernimmt. Trotzdem muss es doch eine Funktion geben, die beim anzeigen dieses Textes aufgerufen wird, oder?
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Funktion zur Textausgabe gesucht

  Alt 6. Jun 2004, 18:02
Soweit ich weiß ist das im OS definiert und folglich kaum ansprechbar.

Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  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 08:53 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