Delphi-PRAXiS
Seite 5 von 12   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zugriff auf ein TImage einer externen Anwendung (https://www.delphipraxis.net/86561-zugriff-auf-ein-timage-einer-externen-anwendung.html)

bitsetter 23. Feb 2007 12:08

Re: Zugriff auf ein TImage einer externen Anwendung
 
Probiere es doch einfach aus. Bei meinem Beispiel, setzt du einfach den Cursor über das TMemo oder was auch immer, das Label zeigt dann den Text an, wenn er ausgelesen werden kann. Es gibt auch Programme dafür, wie zB. WinSpy.
Delphi-Quellcode:
function TextHolen(Handle: HWND): AnsiString;
begin
  SetLength(Result, SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0)+ 1);
  SendMessage(Handle, WM_GETTEXT, Length(Result), integer(Result));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Point: TPoint;
begin
  Timer1.Interval:= 100;
  GetCursorPos(Point);
  Label1.Caption:= TextHolen(WindowFromPoint(Point));
end;

sirius 23. Feb 2007 12:19

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von KoS
Also kurz zum Verständnis, ein RichEdit (sei es nun von Delphi oder generell) besitzt ein eigenes Handle, ein Memo auch? nur ein Label wird in dem sinne sozusagen einfach nur draufgezeichnet, d.h. der Text existiert schon irgendwo im Hauptprogramm?

Ja, richtig. Alles was in der Hierarchie als Vorfahr ein TWincontrol hat, besitzt erstmal ein Window Handle (deswegen TWinControl)) Zu deinen Beispielen gehört auch TEdit oder TStaticText. An diese Sachen kommt man bitsetters Code (bzw. leichten Abänderungen je nach Info die man haben will) leicht heran.

KoS 23. Feb 2007 14:31

Re: Zugriff auf ein TImage einer externen Anwendung
 
Oky also ich hab es mal mit dem "Tool" von bitsetter Versucht, er zeicht mir zwar TEdit-Texte an, aber ansonsten nur die Form.Caption, nicht jedoch die TLabel.

Zitat:

Es gibt auch Programme dafür, wie zB. WinSpy.
Ich hab mal ganz kurz gegooglet, ist WinSpy nicht was zum überwachen vom PC und nicht auf das auflesen von Forms bezogen?
Ich hatte vor längerem auch mal ein Programm gehabt das sämtliche Informationen von Prozessen ausgelesen hat, auch bei Mouse-Over. Infos über Class, Name, Text, Handle, Owner ... aber ich weiß nicht mehr wie das heißt.

sirius 23. Feb 2007 14:37

Re: Zugriff auf ein TImage einer externen Anwendung
 
Also ich habe Winspector um die Handles zu vergleichen und zu schauen was es so für windows gibt.

bitsetter 23. Feb 2007 18:32

Re: Zugriff auf ein TImage einer externen Anwendung
 
Es gibt eventuell noch bessere Programme, aber hier sind welche, die genieren auch den Delphi Code für FindWindow().
WinSpy
X-Spy
eda_preview270.exe

sirius 23. Feb 2007 21:33

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von KoS
Oky also ich hab es mal mit dem "Tool" von bitsetter Versucht, er zeicht mir zwar TEdit-Texte an, aber ansonsten nur die Form.Caption, nicht jedoch die TLabel.

Was meine Theorie nochmal bestätigt.

sirius 26. Feb 2007 15:27

Re: Zugriff auf ein TImage einer externen Anwendung
 
Ok, ich hab noch eine Idee. Vielleicht finden wir die WndProc von TLabel. Dazu müsstest du in deinem Programm in der Info-Prozedur mal nach jeder Adressrechnung eine Message schicken, damit ich weis, wie weit er ohne Fehler kommt.

KoS 26. Feb 2007 16:45

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Dazu müsstest du in deinem Programm in der Info-Prozedur mal nach jeder Adressrechnung eine Message schicken
Verzeih meine unwissenheit, aber wie genau meinst du das?
Ich hab mal versucht am ende der Info-For schleife das einzusetzen
Delphi-Quellcode:
memory^.Postmessage(memory^.backwnd,memory^.backmsg,wparam,lparam);
was bei mir aber für verwirrung sorgt, da jetzt eigentlich nur noch lauter 0 als Ausgabe kommt, nicht mehr die größe des TImage/TLabel (in Verbindung mit dem Testprogramm)

sirius 26. Feb 2007 17:31

Re: Zugriff auf ein TImage einer externen Anwendung
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, Um die Größe der Beiträge nicht weiter aufzublähen, hänge ich den Code mal unten drann (Ich hoffe ich habe nix vergessen)


Ich habe mal die Messages umbenannt und ein paar schönere Namen vergeben.

Es gibt jetzt zwei Info Prozeduren. Die eine ist original und derzeit in geschweiften Klammern, also auskommentiert.
Und die andere hat diese DebugMessages.

Die ganze API Funktionen, wie z.B. Postmessage sind in der Windows SDK beschrieben. Liegt eigentlich jedem Delphi bei. Ist eine Kopie der Beiträge aus der msdn-Library.

Postmessage sendet eine Nachricht. Dazu gibts da 4 Parameter. Der erste ist das Window-Handle, an welches die NAchricht geschickt werden soll. Das zweite ist einfach eine MessageNummer, damit wir die Message wiederfinden und der richtigen Bearbeitungsroutine zuordnen können. Die letzten beiden Parameter (wparam und lparam) sind zwei frei wählbare integer-Werte in der wir unsere Message schreiben.


Edit: neue Version

KoS 26. Feb 2007 17:51

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von sirius
So, Um die Größe der Beiträge nicht weiter aufzublähen, hänge ich den Code mal unten drann (Ich hoffe ich habe nix vergessen)

Leider wohl doch. Du hast den Source angehängt der eigentlich mit dem den ich schon hab gleich ist.
D.h. nichts mit DebugInfo oder umbenannte Messages. ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 Uhr.
Seite 5 von 12   « Erste     345 67     Letzte »    

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