Delphi-PRAXiS
Seite 2 von 3     12 3      

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. ;-)

sirius 26. Feb 2007 18:10

Re: Zugriff auf ein TImage einer externen Anwendung
 
Ich sollte vorher auch die Änderungen abspeichern bevor ich die Zip erstelle

sirius 27. Feb 2007 14:45

Re: Zugriff auf ein TImage einer externen Anwendung
 
So, jetzt kommt noch etwas Komfort in die Sache (hoffe ich). Ich hab die Exceptionbehnadlung hinbekommen. Dadurch schmiert der fremde Prozess nicht ab, wenn ein Fehler in der Info auftritt (bei mir klappt es zumindest :mrgreen: ).

Die Änderungen mal wieder im Text:
Delphi-Quellcode:
procedure info(...); stdcall;
//bisherige Variablen beibehalten
//neu hinzukommen:
var isexception:longbool;
    myexception:cardinal;
begin
  asm //ging leider nur in Assembler
    xor edx,edx
    mov myexception,edx
    mov isexception,edx
    push ebp
    call @@1
   @@1:
    add [esp],15
    push dword ptr fs:[edx]
    mov dword ptr fs:[edx],esp
    mov myexception,esp
    jmp @@try
   @@except:
    mov eax,esp    //hier springt er hin, wenn eine Exception auftaucht
    add eax,4
    mov esp,myexception
    mov ebp,[esp+8]
    inc isexception
    xor edx,edx
    pop dword ptr fs:[edx]
    pop edx
    pop ebp
    mov eax,[eax]
    mov edx,dword ptr [eax]
    mov wparam,edx //ExcpetionCode
    mov edx,[eax+12]
    mov lparam,edx //Adresse, wo passiert
   @@try:
 end;

 if not isexception then begin
   //hier kommt alles was sonst zwischen try..except stehen würde
   //also der bisherige Inhalt der Info
   Searchtype:=TSearchType(lparam mod 65536);
   .
   .
   .
   memory^.Postmessage(memory^.backwnd,backmsg,wparam,lparam);
   
   //hier noch anfügen (um die exception Behandlung wieder zu entfernen, wenn alles klar gelaufen ist)
   asm
     xor edx,edx
     pop dword ptr fs:[edx]
     pop edx
     pop edx
  end;    
 
 end else begin
   //Wenn oben irgendetwas schief läuft (z.B. EAccessViolation) dann springt er zurück in den Assemblercode ganz oben
   //und dort wird isexception auf true gesetzt, damit er nacher hier landet
   //und hier können wir jetzt exceptionbehandlung betreiben
   //in dem fall einfach ne Message schicken, dass ein fehler passiert ist
   memory^.Postmessage(memory^.backwnd,errormsg,wparam,lparam);  
   //ErrorMsg muss noch als Konstante definiert werden
 end;

end;
ErrorMsg im Hauptprigramm bearbeiten:
Delphi-Quellcode:
const ErrorMsg=ImageMsg+6; //oder so ähnlich
...
type Tform1....
    ...
    procedure GetErrorMsg(var msg:TMessage);message ErrorMsg;
    ...
end;

...

procedure Tform1.getErrorMsg(var msg:TMessage);
begin
  if cardinal(msg.wparam)=EXCEPTION_ACCESS_VIOLATION then
    memo1.lines.add('Error: EAccessViolation @'+inttohex(msg.lparam,8))
  else
    memo1.lines.add('Error: '+inttohex(msg.wparam,8)+' @'+inttohex(msg.lparam,8));
end;

KoS 28. Feb 2007 16:31

Re: Zugriff auf ein TImage einer externen Anwendung
 
Hallo,

also ich hab jetzt die Änderungen mal eingepflegt, aber das Form wird trozdem mit einer Zugriffsverletzung geschlossen (abgefangen durch das Hauptform). So wie es mit der letzten Version von deinem Programm auch war.

Dann hängt dein Programm ein bisschen um gibt Folgendes nach ner kleinen Weile aus:
Delphi-Quellcode:
Debug(1): FFFF015E

sirius 28. Feb 2007 17:30

Re: Zugriff auf ein TImage einer externen Anwendung
 
Die Exception-Bahndlung funktioniert nicht? Schade. Klappt sie mit dem Beispielprogramm?
Das wäre nämlich jetzt nicht schlecht, dann könten wir mit einer For Schleife mal etwas probieren. Ich habe nämlich, das Gefühl, dass die 9 nicht stimmt. Bzw. Ich bin mir dessen sicher, nur vielleicht haben wir Glück und es ist nur die 9.

Ich schau mir das später mal an, was du geschickt hast. Du kannst ja derweil mal mit andern Zahlen testen und dir das Ergebnis merken

KoS 28. Feb 2007 18:38

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von sirius
Die Exception-Bahndlung funktioniert nicht? Schade. Klappt sie mit dem Beispielprogramm?

Was heißt funktioniert nicht, ursprünglich war es ja so das mir der fremde Prozess komplett abgestürzt bzw. beendet worden ist, ohne eine Meldung.
Aber das hast du ja relativ schnell gefixt und dann gab es nur noch die Zugriffsverletzung bezüglich dem Form, was dann das Hauptform des fremden Prozess angezeigt hat.
Sogesehen hat sich nichts geändert, das Zielform schließt sich also nach wie vor noch, was du glaub ich mit deiner Exception-Behandlug verhindern wolltest.

Die Frage ob es bei meinem Beispielprogramm funktioniert ist etwas schwer zu beantworten. Ich sags mal so, da ich in meinem Testprogramm ja keine Zugriffsverletzung bekomme würde ich sagen sie funktioniert. D.h ich hab ja auch vorher schon keine bekommen.

Zitat:

Zitat von sirius
Das wäre nämlich jetzt nicht schlecht, dann könten wir mit einer For Schleife mal etwas probieren. Ich habe nämlich, das Gefühl, dass die 9 nicht stimmt. Bzw. Ich bin mir dessen sicher, nur vielleicht haben wir Glück und es ist nur die 9.

Ich nehme mal an du meinst diese 9?
Delphi-Quellcode:
p:=pointer(getwindowlong(myhandle,gwl_wndproc)+9);

sirius 28. Feb 2007 19:17

Re: Zugriff auf ein TImage einer externen Anwendung
 
Ja, ich meinte diese 9

Um zu testen, ob die Exception-Behandlung beim Testprogramm funktioniert, musst du einfach nur diese Zahl auf 10 oder so ändern, damit löst du auch beim Testprogramm eine Exception aus. Wollte nur wissen, ob es an deinem Compiler liegt. Denn Pascal und ASM zu mixen bringt meistens Probleme. Da muss man sich den Compiler genau anschauen. Wenn es nämlich in deinem Testprogramm auch nicht funktioniert, dann liegts an deinem Compiler. (und ich wüsste auch schon welche Stelle, aber ich kanns nicht korrigieren). Ich könnte dir dann die fertigen EXEn schicken.
Also einfach mal mit dem Testprogramm (PImage) probieren. Einmal die 9 und einmal die 10 bei getwindowlong, bei der 9 sollte alles nornmal laufen und bei der 10 eine EAccesviolation.

Das war aber eigentlich nur mal so Beiwerk. Allerdings hätte ich mit diesem Beiwerk ein kleines Programm schreiben können, was ein bisschen automatisch probiert, wie ich die Adressrechnung gestalten sollte.

Namenloser 28. Feb 2007 19:18

Re: Zugriff auf ein TImage einer externen Anwendung
 
Wow, dass ihr so viel zeit investiert, nur um ein image einer anderen anwendung auszulesen :shock:

sirius 28. Feb 2007 19:19

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von NamenLozer
Wow, dass ihr so viel zeit investiert, nur um ein image einer anderen anwendung auszulesen :shock:

Der olympische Gedanke zählt :zwinker: Soviel Zeit ist es außerdem gar nicht.

sirius 1. Mär 2007 08:27

Re: Zugriff auf ein TImage einer externen Anwendung
 
Evtl. funktioniert dieses Exception-handling besser (Eigentlich müsste ich da mal exakt drüber lesen, wo was nach einer Exception zu finden ist, hab aber grad nicht die Zeit).
Hier der erste Teil (am anfang von Info), der Rest bleibt gleich.
Delphi-Quellcode:
asm
    xor edx,edx
    mov isexception,edx
    push ebp
    call @@1
   @@1:
    add [esp],12
    push dword ptr fs:[edx]
    mov dword ptr fs:[edx],esp
    jmp @@try
   @@except:
    mov eax,esp
    add eax,4
    mov esp,[esp+8]
    mov ebp,[esp+8]
    inc isexception
    xor edx,edx
    pop dword ptr fs:[edx]
    pop edx
    pop ebp
    mov eax,[eax]
    mov edx,dword ptr [eax]
    mov wparam,edx
    mov edx,[eax+12]
    mov lparam,edx
   @@try:
 end;
Jetzt brauchst du zumindest die unsicher Variable "myexception" nicht mehr

KoS 1. Mär 2007 10:14

Re: Zugriff auf ein TImage einer externen Anwendung
 
Mir fällt grad auf du hattest das mit der +9 ja noch geändert:
Delphi-Quellcode:
p:=pointer(cardinal(memory^.oldwindowproc)+9);
D.h. das mit dem getlongwindow machst du ja an einer anderen Stelle. Ich hatte das glaub ich aus dem Forum korpiert und nicht mehr darauf geachtet was du in dem Code hattest. ;-)

Zitat:

Zitat von sirius
Ich könnte dir dann die fertigen EXEn schicken.

Das könntest du mal tun, damit ich seh wie es "eigentlich" funktionieren soll, oder ob es das selbe macht wie meins.

Zitat:

Zitat von sirius
Also einfach mal mit dem Testprogramm (PImage) probieren. Einmal die 9 und einmal die 10 bei getwindowlong, bei der 9 sollte alles nornmal laufen und bei der 10 eine EAccesviolation.

So... jetzt könnt ich mir erstmal in den A.... beißen! Hab das grad mal versucht, beim ersten mal mit der 9 lief alles glatt, dann bei der 10 gabs die Zugriffsverletzungs-Meldung im Testprogramm.

Und nun der Hammer! Ich hab mal die dcu gelöscht (was ich bisher leider nicht gemacht hab) und nun bekomm ich auch Zugriffsverletzungen bei der 9 und das Suchprogramm hängt sich auf! Und jetzt soll man noch den Fehler finden? Ich wette der Fehler wäre schon viel früher gekommen hätte ich mal ordentlich wie es sich gehört die dcu gelöscht.

sirius 1. Mär 2007 12:30

Re: Zugriff auf ein TImage einer externen Anwendung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das häufige PostMessage macht irgendwie Probleme. Weis nicht warum, aber wenn ich 5 mal hintereinander dieselbe Message schicke bekommt das Programm einen Fehler. Wenn ich sie nur zweimal schicke dann nicht.

Ich hab jetzt mal as Programm angehängt (Code und Exe). Damit können wir gleich die 9 ein wenig "untersuchen". Wenn erstmal soweit alles funktionier und kein Programm abstürzt, dann kannst du die Zahlen "von" und "bis" ändern. Das sind dann die Zahen, die er so durchläuft.

matashen 1. Mär 2007 13:50

Re: Zugriff auf ein TImage einer externen Anwendung
 
ich hab jetzt nicht alles verfolgt was hier an code gelaufen ist, aber zum Thema Postmessage und sendmessage hab ich folgendes

Unterschied Postmessage und Sendmessage

sirius 1. Mär 2007 14:49

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von matashen
ich hab jetzt nicht alles verfolgt was hier an code gelaufen ist, aber zum Thema Postmessage und sendmessage hab ich folgendes

Unterschied Postmessage und Sendmessage

Bleibt immer noch die Frage, ob die MessageQueue irgendwann überläuft. Hab ich aber auf der Seite keinen Hinweis gefunden.

KoS 2. Mär 2007 13:45

Re: Zugriff auf ein TImage einer externen Anwendung
 
Also dein Programm/EXE tut genau das was es soll!!
Delphi-Quellcode:
Debug: $00000000 $0B7B037E
Error: EAccessViolation @0B7B03D5
onPaint
1022
164
1024
167
onPaint
1021
164
1024
768
onPaint
152
160
1022
166
So wie ich das allerdings hier an dem OnPaint sehe, sind da nicht die TImages die ich will. Da die Auflösung selbst nur 1024x768.

sirius 2. Mär 2007 13:50

Re: Zugriff auf ein TImage einer externen Anwendung
 
Das onPaint sind die stellen im Fenster, die grad neu gezeichnet werden (wenn du ein anderes Fenster drüber schiebst) Darauf könntest du dann reagieren und selber mitzeichnen.

Die Zahlen hinter debug und Error schau ich mir am Wochenende mal an. Kannst du noch mal die Einträge "von" und "bis" ändern? Also von=5 und bis=35 z.B.

KoS 2. Mär 2007 13:55

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von sirius
Das onPaint sind die stellen im Fenster, die grad neu gezeichnet werden (wenn du ein anderes Fenster drüber schiebst) Darauf könntest du dann reagieren und selber mitzeichnen.

Das hab ich schon mitbekommen.

Zitat:

Zitat von sirius
Die Zahlen hinter debug und Error schau ich mir am Wochenende mal an. Kannst du noch mal die Einträge "von" und "bis" ändern? Also von=5 und bis=35 z.B.

Hab ich auch schon versucht, leider kommt bei dem Versuch 0-100 immer nur das selbe.
Delphi-Quellcode:
Debug: $00000000 $0BE1037E
Error: EAccessViolation @0BE103D5

sirius 2. Mär 2007 14:08

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Hab ich auch schon versucht, leider kommt bei dem Versuch 0-100 immer nur das selbe.
Ok, hab grad doch mal durchgerechnet und weis jetzt wo er hängt, allerdings einer müsste doch mal anders sein.

Oder im negativen, aber das geht in dem Programm nicht.

KoS 2. Mär 2007 14:19

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von sirius
allerdings einer müsste doch mal anders sein.

Tut mir leid, aber ich sehe weder zwischen Debug und Debug noch zwischen Error und Error unterschiede.

sirius 2. Mär 2007 17:31

Re: Zugriff auf ein TImage einer externen Anwendung
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, jetzt kannst du auch mal im negativen stöbern...
Es gibt auch eine interessante Message mehr.

Edit: Ich hab mal auf meinem anderen Rechner, wo Turbo Delphi Explorer drauf ist alles compiliert (Testprogramm und GetImage) und es gibt keine Probleme. Funktioniert alles.

sirius 3. Mär 2007 23:40

Re: Zugriff auf ein TImage einer externen Anwendung
 
Liste der Anhänge anzeigen (Anzahl: 1)
(Schade, ich durfte oben nicht mehr editieren >24h)

Was unten anhängt wurde mit Turbo Delphi Explorer compiliert und zuvor editiert.

also wie gehabt, einmal communicate drücken und die Ausgabe speichern

Und dann neu hinzugekommen sind ein paar Funktionen zum disassemblen. Als erstes die Taste Memory, die den Speicherinhalt bei der Adresse der wndProc disassembled und dann kann man mit real Address weiter suchen (da sag ich dir wenn du mir den ersten Inhalt nach "Memory" beschreibst.

KoS 5. Mär 2007 16:32

Re: Zugriff auf ein TImage einer externen Anwendung
 
Also ich hab das jetzt mal ausprobiert. Programm bekommt keine Zugriffsverletzung.
Allerdings habe ich auch mal den bereich -200 bis 200 "gescannt" und habe trozdem immer noch kein Ergebnis, d.h. immer nur:
Debug: $00000000 $0C27037E
Error: EAccessViolation @0C2703E4

Ein klick auf Memory brachte auch kein Ergebnis.
Zur Info: Bei meinem Testprogramm hat allse richtig Funktioniert.

Ich werde mal noch weiter die Adresse abklappern, aber jenseits von 200 dürfte doch eigentlich nichts sein, oder?

sirius 5. Mär 2007 16:47

Re: Zugriff auf ein TImage einer externen Anwendung
 
Nee, ein Ergebnis bringt das jetzt nicht mehr. (Also Communicate könnte, aber das steht jetzt nicht im Vordergrund)

Mit Memory lesen wir den ersten relevanten Teil des speichers aus. Den brauch ich mal um zu sehen, warum die 9 nicht funktioniert.
Kannst du den mir mal zukommen lassen (mit Speichern kannst du den Inhalt in eine TXT ablegen).

KoS 5. Mär 2007 17:59

Re: Zugriff auf ein TImage einer externen Anwendung
 
Wie ich bereits sagte, es steht nichts drin.

sirius 5. Mär 2007 18:59

Re: Zugriff auf ein TImage einer externen Anwendung
 
Nach drücken von Memory steht nix drin (im Gegensatz zum Beispielprogramm)?
Evtl. erst Communicate drücken und dann nach etwa 10s auf Memory. Wenn dann nix kommt, weis ich auch nicht mehr weiter. Anscheinend stimmt etwas nicht mit der WndProc (also dem Zeiger dahin)

KoS 5. Mär 2007 19:08

Re: Zugriff auf ein TImage einer externen Anwendung
 
Habs grad nochmal probiert mit Communicate, ca. 10s warten und dann Memory. Ist leider das selbe Ergebnis, bzw. kein Ergebnis. Memo wird gecleared aber nicht gefüllt.

Kann es vielleicht sein das man sich vorwärts hangeln muss vom MainForm des fremden Prozesses zum eigentlichen Form?

sirius 5. Mär 2007 19:14

Re: Zugriff auf ein TImage einer externen Anwendung
 
Und was kommt bei deinem Testprogramm?

Nee, muss man eigentlich nicht, da du ja (hoffentlich) genau das Handle des "Ziel"-Formulars ermittelt hast. Oder, ah jetzt fällt mir etwas ein. Ist vielleicht, dass Zielformular nicht wirklich die Mainform wo der Titel steht? Allerdings müsste dann Memory trotzdem ein Ergebnis liefern, auch wenn es unbrauchbar ist. Memory macht nix weiter, als den speicher rund um die WndProc auszulesen und zu übersetzen (in Assembler).
Damit wüsste ich, was dort steht und könnte dementsprechend reagieren.
Communicate müsste eigentlich auch immer zwei Debug-Infos und dann eine ErrorMessage schicken.
Alles komisch :gruebel:

KoS 6. Mär 2007 09:12

Re: Zugriff auf ein TImage einer externen Anwendung
 
Beim Testprogramm kommt der Assambler-Code.

Ich weiß nicht genau "wie" das Programm Funktioniert, aber das Ziel-Form ist "ein" Formular von meheren des Prozesses welches während der Laufzeit erzeugt wird und dann wieder geschlossen. (Ob nun Create oder Show weiß ich nicht).

Und wie du ja gesehen hast, wird nur 1 Debug und 1 Error ausgegeben. Aber ich nehm an, da ja anfänglich das Ziel-Form durch Zugriffsverletzung geschlossen wurde, das es eigentlich schon irgendwie der korrekte Handle sein muss.

sirius 6. Mär 2007 10:47

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von KoS
Und wie du ja gesehen hast, wird nur 1 Debug und 1 Error ausgegeben. Aber ich nehm an, da ja anfänglich das Ziel-Form durch Zugriffsverletzung geschlossen wurde, das es eigentlich schon irgendwie der korrekte Handle sein muss.

Stimmt. Er dürfte ja auch keinen Fehler bringen, sondern maximal, dass er kein Label findet.


Evtl. kann man die speicherseiten dort nicht lesen :gruebel:

sirius 7. Mär 2007 09:18

Re: Zugriff auf ein TImage einer externen Anwendung
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich hab mal mehr Fehlermeldungen eingebaut und versucht den Addressbereich lesbar zu machen. Testen kann ich leider nicht, da beim Beispielprogramm ja alles funktioniert.

bitsetter 7. Mär 2007 12:40

Re: Zugriff auf ein TImage einer externen Anwendung
 
Hallo,

wenn KoS die Applikation in der er ein Image kontrollieren möchte mal zu Testzwecken sirius zur Verfügung stellen würde, dann könntet Ihr beide sicherlich schneller zu einem Ergebnis kommen. Voraussetzung ist natürlich, dass das Programm nicht zu umfangreich ist und die Lizenzvereinbarungen eingehalten werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr.
Seite 2 von 3     12 3      

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