Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Was sind Structures (https://www.delphipraxis.net/90326-sind-structures.html)

willnix 15. Apr 2007 14:23


Was sind Structures
 
Ich hoffe die Frage im Titel ist einigermaßen korrekt formuliert.
Was ich meine sind dinge wie dies:
Delphi-Quellcode:
typedef struct _gettextex {
    DWORD cb;
    DWORD flags;
    UINT codepage;
    LPCSTR lpDefaultChar;
    LPBOOL lpUsedDefChar;
} GETTEXTEX;
Dinge dieser Art sind mir jetzt schon mehrfach begegnet wenn ich aus einer anderen Anwendung etwas auslesen wollte.
Jetzt zum Beispiel würde ich gerne ein Rich Edit auslesen.
Die MSDN Libary meint dazu:
Zitat:

The EM_GETTEXTEX message allows you to get all of the text from the rich edit control in any particular code base you want.

Syntax
Ok.

Was ich nicht verstehe ist folgendes:
Zitat:

Pointer to a null-terminated string that receives the text. The size of this buffer should be placed in the cb member of the GETTEXTEX structure[u]
Also ich finde in der MSDN Lib. dann auch den Eintrag für die GETTEXTEX Structure, aber was genau ist das und wie verwende ich es in Delphi.
Also ich wäre sehr dankbar wenn mir jemand an diesem Beispiel erklären könnte was das ist wie ich es in Delphi einbauen kann (wo und wie :mrgreen: ).
Also wie ich ein Handle finde und wie ich aus Edits Text auslese (und Text hinein schreibe)weiß ich nur eben wenn es um Rich Edits oder List Views geht bin ich wegen den zu verwenden Structures aufgeschmissen.
Vielen Dank im Voraus
Willnix

mkinzler 15. Apr 2007 14:25

Re: Was sind Structures
 
Das Delphi-Gegenstück heißt RECORD

fwsp 15. Apr 2007 14:27

Re: Was sind Structures
 
in C++ sind structure Klassen die nur daten und keine methoden beinhalten.

Robert Marquardt 15. Apr 2007 14:30

Re: Was sind Structures
 
Zitat:

Zitat von fwsp
in C sind structure Klassen die nur daten und keine methoden beinhalten.

Das ist ein voellig unsinniger Satz, da C weder Methoden noch Klassen hat. Bei C++ stimmt er natuerlich.
struct und record sind ein und das selbe. Fuer union gibt es kein genaues Gegenstueck, aber ein variantes Record unterscheidet sich nur wenig.

fwsp 15. Apr 2007 14:39

Re: Was sind Structures
 
Zitat:

Zitat von Robert Marquardt
Bei C++ stimmt er natuerlich.

das hab ich doch geschrieben. :stupid:

Christian Seehase 15. Apr 2007 14:41

Re: Was sind Structures
 
Moin Willnix,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Zitat:

Zitat von willnix
Was ich nicht verstehe ist folgendes:
Zitat:

Pointer to a null-terminated string that receives the text. The size of this buffer should be placed in the cb member of the GETTEXTEX structure[u]

In C werden Strings als Pointer auf einen Speicherbereich deklariert, der den String enthält, wobei das Ende des Strings durch ein Nullbyte kenntlich gemacht wird.

Bei der gezeigten Struktur (Record) musst Du also lpDefaultChar erst einmal mit einem entsprechenden Buffer versorgen (siehe GetMem/Allocmem). Den Platz den Du für den Buffer reserviert hast, musst Du auch in cb eintragen.
Wichtig:
EM_GETTEXTEX erwartet, dass cb auch den Platz für das abschliessende Nullbyte enthält. Wenn Du also einen Buffer von 100 Byte reservierst, und cb auf 100 setzt, so werden maximal 99 Zeichen ausgelesen.

Zitat:

Zitat von willnix
nur eben wenn es um Rich Edits oder List Views geht bin ich wegen den zu verwenden Structures aufgeschmissen.

Wenn sich diese ListViews nicht in Deinem Programm befinden, wirst Du noch wegen etwas anderem aufgeschmissen sein ;-)
Bei Controls, die es erst seit dem 32-Bit Windows gibt, wie eben ListView, kann man die Daten nicht mehr so einfach auslesen, wie bei den Controls, die es schon im 16-Bit Windows gab. Aber auch hierfür wirst Du hier Beispiele finden, suche, z.B., einfach mal nach Hier im Forum suchenDIPS

CCRDude 15. Apr 2007 14:48

Re: Was sind Structures
 
Auch bei C++ würde ich nicht ganz zustimmen, denn eine Klasse ist ja etwas, das erst initialisiert werden muss, während ein struct/record davon unabhängig ist (es sei denn natürlich, man nähme einen Zeiger darauf...).
Und da dann records in Delphi durchaus doch "Methoden" (bzw. Funktionen und Prozeduren) beinhalten dürfen, ist das Chaos komplett ;)

Um mal auf die ursprüngliche Frage zu antworten:
Delphi-Quellcode:
type
   _gettextex = record
      cb, flags: DWORD;
      codepage: UINT;
      lpDefaultChar: LPCSTR;
      lpUsedDefaultChar: LPBOOL;
   end;
   GETTEXTEX = _gettextex;

// [...]

var tex: ^GETTEXTEX;
    dwSize: DWORD;
    pc: PChar;
begin
   New(tex);
   dwSize := 4096;
   tex^.cb := dwSize;
   tex^.flags := GT_USECRLF;
   tex^.codepage := CP_ACP;
   tex^.lpDefaultChar := nil;
   tex^.lpUsedDefaultChar := nil;
   GetMem(pc, dwSize);
   SendMessage(controlHandle, EM_GETTEXTEX, tex, pc);
   DoSomethingWithResult(tex);
   FreeMem(pc, dwSize);
   Dispose(tex);
end;
Anhand der Doku geraten, nicht ausprobiert ;) Und anstelle einer festen Größe sollte man natürlich vorher per anderer Message (EM_GETTEXTLEN oder was es da evtl. gibt) die notwendige Größe bestimmten.

Hmmmm... oh, jetzt kam noch jemand anders dazwischen... wird mein Post trotzdem nicht überflüssig, denn da ist was falsch: cb ist NICHT für die Größe von lpDefaultChar, sondern für die des PChars im lParam ;)

Christian Seehase 15. Apr 2007 14:55

Re: Was sind Structures
 
Moin Dude,

Zitat:

Zitat von CCRDude
wird mein Post trotzdem nicht überflüssig, denn da ist was falsch: cb ist NICHT für die Größe von lpDefaultChar, sondern für die des PChars im lParam ;)

stimmt, hast Du auch wieder recht :wall:

Aber das Prinzip war richtig ;-)

Robert Marquardt 15. Apr 2007 16:06

Re: Was sind Structures
 
Ohne laestiges Alloziieren:
Delphi-Quellcode:
type
  LPGETTEXTEX = ^GETTEXTEX;
  GETTEXTEX = record
    cb: DWORD;
    flags: DWORD;
    codepage: UINT;
    lpDefaultChar: LPCSTR;
    lpUsedDefaultChar: LPBOOL;
 end;

// [...]

var
  tex: GETTEXTEX;
  pc: array [0..4095] of Char;
begin
  tex.cb := SizeOf(pc);
  tex.flags := GT_USECRLF;
  tex.codepage := CP_ACP;
  tex.lpDefaultChar := nil;
  tex.lpUsedDefaultChar := nil;
  SendMessage(controlHandle, EM_GETTEXTEX, WPARAM(@tex), LPARAM(@pc[0]));
  DoSomethingWithResult(pc);
end;

CCRDude 15. Apr 2007 16:11

Re: Was sind Structures
 
Fürs tex mag das angehen und sogar Fehler vermeiden, da hast Du recht... aber beim array muss ich widersprechen! Ein statisches Array wie von Dir beschrieben bedeutet, daß nicht mehr als 4K Text aus dem RichEdit ausgelesen werden! Gerade bei dem Overhead, den RTF bedeutet, sind die sehr schnell erreicht und man ist ganz schnell auf der Suche nach Fehlern, warum denn der Text plötzlich abgeschnitten ist...
Und ein riesiges Array, nur um jede mögliche Größe zu berücksichtigen, wäre eine riesige Speicherverquaserei ;)

Robert Marquardt 15. Apr 2007 16:15

Re: Was sind Structures
 
Hast ja recht, aber ich wollte auch noch ein bischen Lerneffekt zu Pointern und Arrays einbringen. Gerade hier an der Schnittstelle von Delphi zu C ist das wichtig.

willnix 15. Apr 2007 16:18

Re: Was sind Structures
 
Vielen Dank erstmal für das herzliche Willkommen und die vielen Tips, ich hoffe ich habe das jetzt verstanden. :corky:
Werde das jetzt gleich mal ausprobieren und falls irgendetwas nicht funktioniert melde ich mich hier nochmal.
Aber danke schon mal und noch n schönen Restsonntag
Willnix

willnix 15. Apr 2007 17:08

Re: Was sind Structures
 
Ähh ich hab doch noch eine Frage.
Und zwar zu folgendem bei Robert Marquardts Text:
Zitat:

type
LPGETTEXTEX = ^GETTEXTEX;
Wie geht denn das, also nach meinem Verständniss wird hier LPGETTEXTEX als neuer Bezeichner für den Variablentyp ^GETTEXTEX eingeführt.
Aber was ist denn das für ein Variablenyp :wiejetzt:, nie von gehört.
Bitte klärt mich auf :gruebel: irgendwas scheine ich da ja falsch zu verstehen.
Willnix

mkinzler 15. Apr 2007 17:09

Re: Was sind Structures
 
^GETTEXTEX bedeutet Zeiger auf GETTEXTEX

willnix 15. Apr 2007 17:16

Re: Was sind Structures
 
Danke!
Unnötig, ein Post mit null Inhalt aber ohne Danke fühl ich mich schlecht :? .
Willnix

EDIT:
Ich muss euch leider schon wieder nerven, jetzt meckert mein Compiler:
Zitat:

Undeclared Identifier:'GT_USECRLF'
Undeclared Identifier:'EM_GETTEXTTEX'
Was ist denn da los ?

Christian Seehase 15. Apr 2007 17:42

Re: Was sind Structures
 
Moin Willnix,

ein Dankespost würde ich nicht als Nullposting ansehen.

willnix 15. Apr 2007 18:12

Re: Was sind Structures
 
Da hast du eigentlich recht, desswegen hab ich dann ja doch gepostet :-D .
Naja und jetzt zitier ich mich mal selbst da wir schon auf der zweiten Seite sind und meine letzte Frage noch auf der ersten steht:
Zitat:

Zitat von willnix
Ich muss euch leider schon wieder nerven, jetzt meckert mein Compiler:
Zitat:

Undeclared Identifier:'GT_USECRLF'
Undeclared Identifier:'EM_GETTEXTTEX'
Was ist denn da los ?

Willnix

CCRDude 15. Apr 2007 18:29

Re: Was sind Structures
 
Tja, die Dinger sind halt nicht definiert... beides sind Konstanten, für deren Benutzung Du sie entweder selber definieren musst, oder eine Unit einbinden, die das schon für Dich tut. Messages könnte das z.B. sein (geraten), von Hand findest Du sie vermutlich im Platform SDK in der richedit.h.

Meine Delphi-Kiste ist gerade ausgeschaltet, aber im Zweifelsfall durchsuch einfach alle .pas-Dateien im Delphi-Verzeichnis nach diesen beiden Stichworten, dann findest Du schon die Unit, in der sie als Konstante definiert sein dürften (ich bevorzuge dazu grep, auch von Borland mitgeliefert, zur Not tuts auch der Explorer, der erlaubt ja auch Suche nach Text innerhalb von Dateien).

willnix 15. Apr 2007 18:36

Re: Was sind Structures
 
Hmm, ich dachte nur das würde durch die ShellApi, die ich schon eingebunden habe, erledigt.
Scheint aber wohl nicht der Fall zu sein.
Naja, dann mach ich mal auf die Suche.
Danke für die Tipps
Willnix

EDIT:
Ich bekomms nicht gebacken, ich finde einfach keine entsprechende Unit.
Allerdings finde ich auch in der Hilfe nichts unter EM_GETTEXTEX und alle anderen sachen wie WM_GETTEXT oder EM_GETTEXTRANGE sind dort aufgelistet.

willnix 15. Apr 2007 20:56

Re: Was sind Structures
 
Vieleicht liegt es daran, dass ich Delphi 7 SE verwende.
Das ist ein gemoddetes Delphi 7 Pro von http://www.liteapplications.com.
Eventuell könnte mir jemand die entsprechende *.pas Datei zukommen lassen, vlt. ist meine fehlerhaft.
Natürlich nur falls das nicht illegal ist.
Sonst muss ich sie mir aus Delphi 7 Personal holen, das gibt es ja kostenlos von Borland.
Wiilnix

Christian Seehase 15. Apr 2007 21:48

Re: Was sind Structures
 
Moin Willnix,

diese Konstanten sind, zumindest in D7, nicht deklariert.
Wie CCRDude schon so richtig vermutete sind sie in der richedit.h deklariert:

Delphi-Quellcode:
const
  EM_GETTEXTRANGE = WM_USER+75;
  EM_GETTEXTEX   = WM_USER+94;
Nicht alles, was im PSDK deklariert ist, wurde auch in Delphi umgesetzt.

Das PSDK (mit den Header-Dateien) kannst Du hier herunterladen (bis incl. 2003 R2 Server)
http://www.microsoft.com/downloads/d...displaylang=en

oder noch aktueller, dafür deutlich grösser (bis incl. Vista)
http://www.microsoft.com/downloads/d...DisplayLang=en

Flocke 15. Apr 2007 22:43

Re: Was sind Structures
 
Zitat:

Zitat von Christian Seehase
diese Konstanten sind, zumindest in D7, nicht deklariert.

Kann ich so nicht stehen lassen - alles hier diskutierte steht in der Unit "RichEdit" (die Struktur TGetTextEx, die Konstanten).

Für neuer Sachen aus "richedit.h", die in "RichEdit.pas" noch nicht deklariert sind (z.B. EM_SETTEXTEX), kannst du mein "RichEdit2.pas" benutzen (der Link "Zurück zur Übersicht" bringt dich zur Download-Möglichkeit).

Oxmyx 16. Apr 2007 01:06

Re: Was sind Structures
 
Zitat:

Zitat von CCRDude
Auch bei C++ würde ich nicht ganz zustimmen, denn eine Klasse ist ja etwas, das erst initialisiert werden muss, während ein struct/record davon unabhängig ist (es sei denn natürlich, man nähme einen Zeiger darauf...).
Und da dann records in Delphi durchaus doch "Methoden" (bzw. Funktionen und Prozeduren) beinhalten dürfen, ist das Chaos komplett ;)

Das stimmt so nicht ganz. In C++ gibt es keinen Unterschied zwischen struct und class. Ok, einen winzigen Unterschied gibt es doch: In einer Struktur sind alle Felder standardmäßig public, in einer Klasse sind alle Felder standardmäßig private. Ansonsten sind beide gleich und können auch austauschbar verwendet werden.

CCRDude 16. Apr 2007 07:49

Re: Was sind Structures
 
Ah, ein Alter Ego von ezekiel?

Siehe Kontext: Das (Wort) "Klasse" von fwsp/Robert Marquardt, das ich wiederholte, schien dort nur für Pascal gemeint gewesen sein, deswegen (wie ich ja schon per PM erläuterte) verwendete ich es ungeschickterweise auch ohne weiterer Spezifikation im gleichen Sinne von Pascal-Klasse (die C++-class war ja zudem wie von Dir erläutert schon im struct abgedeckt im Satz ;) ). War vielleicht etwas unklar ausgedrückt, sorry :zwinker:

willnix 16. Apr 2007 18:33

Re: Was sind Structures
 
Ahh, vielen Dank Christian, ich werde mir das ganze dann gleich mal herunterladen.
Das ergibt so eindeutig Sinn.
Ich hatte es natürlich auch mit der RichEdit.pas versucht aber dort war zwar vieles deklariert unter anderem auch GT_USECRLF,
aber eben nicht EM_GETTEXTEX.
Die richedit.h hatte ich eben gar nicht also werde ich mir die jetzt mal runterladen (bzw. gleich das ganze SDK).
Vielen Dank nochmal an alle die mir geholfen haben
Willnix

P.S Ich hoffe jetzt gehts sonst muss ich hier doch noch weiter fragen.

EDIT (grad erst Flockes Post gelesen):
Zitat:

Zitat von Flocke
Kann ich so nicht stehen lassen - alles hier diskutierte steht in der Unit "RichEdit" (die Struktur TGetTextEx, die Konstanten).

Sorry aber das kan ICH nicht so stehen lasen :mrgreen: .
In MEINER RichEdit.pas ist zumindest EM_GETEXTEX NICHT deklariert, aber wie gesagt vieleicht liegts an meiner seltsamen Delphi Version.
Nichts für ungut
Willnix

willnix 16. Apr 2007 19:27

Re: Was sind Structures
 
Ich verzweifel noch daran.
Jetzt sind die Dinger Declariert, aber dafür bekomme ich immer einen leeren String zurück.
Ich habe schon versucht das Wordpad Rich Edit auszulesen, ICQ Fenster auszulesen, ein Rich Edit im eigenen Programm auszulesen, alles ohne Erfolg.
Immer ist die VAriable mit dem empfangen Text leer.
Willnix

Achja hier ist der Code den ich für Wordpad beutzt habe:

Delphi-Quellcode:
unit icq;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI, ComCtrls, RichEdit;

type
  LPGETTEXTEX = ^GETTEXTEX;
  GETTEXTEX = record
    cb: DWORD;
    flags: DWORD;
    codepage: UINT;
    lpDefaultChar: LPCSTR;
    lpUsedDefaultChar: PBOOL;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    RichEdit1: TRichEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  tex: GETTEXTEX;
  pc: PChar;
  wnd: HWND;

implementation

{$R *.dfm}

function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  ChildNr := ChildNr - 1;
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Exit;
    Result := hChild;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
begin
  tex.cb := SizeOf(pc);
  tex.flags := GT_USECRLF;
  tex.codepage := CP_ACP;
  tex.lpDefaultChar := nil;
  tex.lpUsedDefaultChar := nil;
  wnd := FindWindow('WordPadClass','Dokument - WordPad');
  wnd := FindWindowEx(wnd, 0, 'RICHEDIT50W', nil);
  SendMessage(wnd, EM_GETTEXTEX, WPARAM(@tex), LPARAM(@pc[0]));
  if pc = '' then begin
  ShowMessage('NIX AUSGELESEN!');
  end
  else begin
  RichEdit1.Text := pc;
  end;
end;
end.

Flocke 16. Apr 2007 21:30

Re: Was sind Structures
 
Zitat:

Zitat von willnix
Sorry aber das kan ICH nicht so stehen lasen :mrgreen: .
In MEINER RichEdit.pas ist zumindest EM_GETEXTEX NICHT deklariert, aber wie gesagt vieleicht liegts an meiner seltsamen Delphi Version.
Nichts für ungut
Willnix

Hier zwei Passagen aus RichEdit.pas zu Delphi 7, war aber auch in Delphi 5 schon drin.
Zeile 154/155:
Delphi-Quellcode:
  {$EXTERNALSYM EM_GETTEXTEX}
  EM_GETTEXTEX                       = WM_USER + 94;
Zeile 1151 ff.
Delphi-Quellcode:
{ flags for the GETEXTEX data structure }

const
  {$EXTERNALSYM GT_DEFAULT}
  GT_DEFAULT                 = 0;
  {$EXTERNALSYM GT_USECRLF}
  GT_USECRLF                 = 1;

{ EM_GETTEXTEX info; this struct is passed in the wparam of the message }

type
  GETTEXTEX = record
    cb: DWORD;                { count of bytes in the string }
    flags: DWORD;             { flags (see the GT_XXX defines }
    codepage: UINT;           { code page for translation (CP_ACP for default,
                                 1200 for Unicode                 }
    lpDefaultChar: LPCSTR;    { replacement for unmappable chars          }
    lpUsedDefChar: PBOOL;     { pointer to flag set when def char used    }
  end;
  {$EXTERNALSYM GETTEXTEX}
  TGetTextEx = GETTEXTEX;
Zitat:

Zitat von willnix
Ich habe schon versucht das Wordpad Rich Edit auszulesen, ICQ Fenster auszulesen, ein Rich Edit im eigenen Programm auszulesen, alles ohne Erfolg.
Immer ist die VAriable mit dem empfangen Text leer.

Schon mal daran gedacht, dass deine Zeiger (LPARAM) im Kontext eines anderen Prozesses ins Nirwana zeigen?

Christian Seehase 16. Apr 2007 21:40

Re: Was sind Structures
 
Moin Willnix,

was die Initialisierung von cb angeht solltest Du Dir noch einmal diesen Beitrag von CCRDude durchlesen.
Bei Dir wird dort 4 eingetragen, was nun wirklich nicht aussreicht ;-)

pc ist ein PChar, also ein Pointer, und die Grösse eines Pointer ist 4.

Ausserdem kannst Du das
Delphi-Quellcode:
LPARAM(@pc[0])
auch so darstellen
Delphi-Quellcode:
LPARAM(pc)
Was mir dann noch aufgefallen ist:
Bevor Du die Rückgabewerte von Funktionen benutzt, solltest Du erst einmal prüfen, ob der Aufruf erfolgreich war.
Dies betrifft die FindWindow(Ex) Aufrufe.

Zudem solltest Du zuerst EM_GETTEXTLENTHEX benutzen, um zu wissen, wie gross Du den Buffer machen musst, damit Du auch alles auslesen kannst.


Wenn das alles nichts hilft, könnte es sein, dass das Control diesen Weg des Auslesens nicht mehr zulässt (siehe meinen Beitrag zum ListView weiter oben).

CCRDude 17. Apr 2007 09:13

Re: Was sind Structures
 
Um das "in D7 drin oder nicht" noch kurz evtl. aufklären: willnix hatte den Fehler " Undeclared Identifier:'EM_GETTEXTTEX'" ... Tippfehler, ein T zuviel :)

Fürs Auslesen ist mir gerade noch ein Tool eingefallen, das bei älteren Delphi-Versionen dabei war (bei neueren imho nicht mehr), irgendwas mit Dingsdabums-Spy oder so... das zeigte einen Baum sämtlicher GUI-Elemente auf dem Desktop an und konnte imho auch Texte abfragen (war ne gute Demo dafür, wie unsicher TEdit mit Passwordchar war... jedes andere Programm konnte den Text einfachst auslesen). Vielleicht findest Du damit mehr Infos bzw. kannst die Unterschiede zwischen verschiedenen RichEdits vergleichen.

willnix 17. Apr 2007 15:33

Re: Was sind Structures
 
Zitat:

Zitat von Christian Seehase
Moin Willnix,

was die Initialisierung von cb angeht solltest Du Dir noch einmal diesen Beitrag von CCRDude durchlesen.
Bei Dir wird dort 4 eingetragen, was nun wirklich nicht aussreicht ;-)

Ups, da habe ich was falsches gepostet, ich hatte den Code zwischendurch mit allen möglichen Buffergrößen zwischen 10.000 und 4 getestet.
Zitat:

Zitat von Christian Seehase
Ausserdem kannst Du das
Delphi-Quellcode:
LPARAM(@pc[0])
auch so darstellen
Delphi-Quellcode:
LPARAM(pc)

OK das mach ich mal, ist einfacher.
Zitat:

Zitat von Christian Seehase
Bevor Du die Rückgabewerte von Funktionen benutzt, solltest Du erst einmal prüfen, ob der Aufruf erfolgreich war.
Dies betrifft die FindWindow(Ex) Aufrufe.

Is klar sollte man machen, ich hatte allerdings zwischendrin eine Message Box eingebaut dir mir das gefunden Handle anzeigt, und das war richtig. (Also das gleiche wie in WinSpy und mit WinSpy kann ich den Text auslesen).
Zitat:

Zitat von Christian Seehase
Wenn das alles nichts hilft, könnte es sein, dass das Control diesen Weg des Auslesens nicht mehr zulässt (siehe meinen Beitrag zum ListView weiter oben).

Verwendet Win Spy einen anderen ? *zum Autor schiel*
Allerdings habe ich das ganze mit ICQ, meinem eigenen Programm und Wordpad getestet (@CCRDude natürlich habe ich vorher den FindWindowEx Aufruf usw. angepasst).
Also denke ich, dass dieser Fall unwahrscheinlich ist.
Vorausgesetzt sowas ist nicht Systemweit eingeschränkt.
Aber danke schon mal
Willnix


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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