Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Brauche Profi-Hilfe fürs debuggen (https://www.delphipraxis.net/44495-brauche-profi-hilfe-fuers-debuggen.html)

Harry M. 20. Apr 2005 04:33


Brauche Profi-Hilfe fürs debuggen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich will mit SendCopyData text an eine andere anwendung abgeben. die beiden beispiel programme von den schweitzern, den link dazu findet man hier irgenwo im forum, habe ich mir gezogen und versucht den code nach meinem bedarf zu ändern. ist aber leider nicht wirklich was geworden. die orginale beipiele laufen einwandfrei. jetzt habe ich die orginal-zeile
Delphi-Quellcode:
hTargetWnd := FindWindow(nil,PChar('Message Receiver'));
folgendermasen abgeändert
Delphi-Quellcode:
hTargetWnd := FindWindow(nil,PChar('TEST.txt - Editor'));
normaler weise sollte doch nun der text an notepad abgegeben werden. tut es aber nicht. es kommt aber auch nicht die fehlermeldung, das das fenster nicht gefunden wird. es pasiert einfach nichts. ich habe dann mal einen haltepunkt in der funktion
Delphi-Quellcode:
procedure TForm1.SendCopyData(hTargetWnd: HWND; ACopyDataStruct:TCopyDataStruct);
begin
  if hTargetWnd <> 0 then
    SendMessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@ACopyDataStruct))
  else
    ShowMessage('No Recipient found!');
end;
gesetzt um die werte in hTargetWnd zusehen. dazu habe ich mir zuvor die fensterliste mit winsight angesehen. beim 1 versuch konnte ich den titel "'TEST.txt - Editor" darin finden. bei jedem weiteren aber nicht mehr obwohl notepad geöffnet war. ich habe mir mal dann die sache mit so einem demo-programm aus dem kochbuch 7 angesehen wo man auch die fensterlist bekommt. darin habe ich dann das notepad mit dem titel gefunden. es sind die selben werte wie im debugger. ich habe mal die sache als screenshotes angehängt. ich hoffe jemand von euch weiß wo mein problem liegt.

ich habe es auch schon mit word getestet, weil ich dachte das notepad das nicht kann... (daten von andren programmen empfangen) ist aber das gleiche.

Harry M. 20. Apr 2005 08:40

Re: Brauche Profi-Hilfe fürs debuggen (prob gelöst)
 
so nach über 14 stunden suche habe ich es endlich gefunden :dancer: das zauberwort heisst
Delphi-Quellcode:
 PostMessage
dazu bräuchte ich aber eine VOLLSTÄNDIGE liste der virtuellen tastaturcodes, weiß jemand wo ich die bekomme. in google habe ich schon gesucht ca 1 std. aber nicht wirklich eine VOLLSTANDIGE liste gefunden. sowie eine funktion die mir die die komponeten (edit, memo, listbox) der anderen anwendung ausliest. das gefundene beispiel geht nämlich (wirklich) nur mit notepade und dort wird 'edit' angesprochen

Jasocul 20. Apr 2005 08:55

Re: Brauche Profi-Hilfe fürs debuggen
 
Nimm doch die Delphi-Hilfe. Such mal nach virtuellen Tastencodes. :zwinker:
imho ist die Vollständig.

Luckie 20. Apr 2005 09:41

Re: Brauche Profi-Hilfe fürs debuggen
 
Zitat:

Zitat von Harry M.
jetzt habe ich die orginal-zeile
Delphi-Quellcode:
hTargetWnd := FindWindow(nil,PChar('Message Receiver'));
folgendermasen abgeändert
Delphi-Quellcode:
hTargetWnd := FindWindow(nil,PChar('TEST.txt - Editor'));
normaler weise sollte doch nun der text an notepad abgegeben werden. tut es aber nicht. es kommt aber auch nicht die fehlermeldung, das das fenster nicht gefunden wird. es pasiert einfach nichts. [..]
Delphi-Quellcode:
procedure TForm1.SendCopyData(hTargetWnd: HWND; ACopyDataStruct:TCopyDataStruct);
begin
  if hTargetWnd <> 0 then
    SendMessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@ACopyDataStruct))
  else
    ShowMessage('No Recipient found!');
end;
gesetzt um die werte in hTargetWnd zusehen.

Das kann nicht gehen. Und es kommt auch keine Fehlermeldung, dass das Fenster nicht gefunden wurde, weil es gefunden wurde. Warum nichts ankommt im Notepad ist, dass du zwar eine Nachricht WM_COIPYDATA an Notepad schickst, aber selbiges damit nichts anfagen kann, weil es diese Nachricht gar nicht bearbeitet, wenn sie ankommt.

Wie das mit WM_COPYDATA funktioniert kannst du dir hier angucken:
http://www.luckie-online.de/Delphi/S..._COPYDATA.html

Beide Programme müssen dafür aufeinander abgestimmt sein.

Aber eigentlich hättest du das selber sehen können, wenn du dir das mal näher angeguckt hättest.

Harry M. 20. Apr 2005 12:32

Re: Brauche Profi-Hilfe fürs debuggen
 
lieber luckie...

war ich doch auch auf deiner seite und habe nach einer passenden lösung gesucht. auf den geposteten link von dir bin ich aber nicht gestoßen. ich wußte das das fenster gefunden wurde. steht ja auch im debugger. das der empfänger "zwangsmässig" dafür vorgesehen sein musste dahinter bin ich nicht gestiegen. ich dächte das geht mit jeder anwendung. postmessage war das richtige was ich gesucht hatte. nur wenn man nicht genau weiß wie das heißt was man sucht bzw braucht wirds schwer. ich muß jetzt nur noch sehen ob das in meiner anwendung endgültig verwenden kann. aber dafür sind ja die nächsten 14 std da :mrgreen:


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