![]() |
FindMemo, FindEdit
Hallo Leute :wink: ,
ich habe (aus Testzwecken) zwei von sich unabhängige Delphiprogramme. Ziel: auf Programm eins per Buttonklick einen Text in ein Editfeld oder Memo des zweiten Programms schreiben. bin bereits bei dem Editfeld gescheitert und habe diese Codes probiert: Randinformationen: -Ich weiß, dass der Fehler hierbei im Code steckt den ich hier schreibe. -Mein TEdit im Programm 2 heißt 'TextFeld'. -Appl2 ist auch korrekt, kann nicht daran liegen. var hbtn: Thandle; [...] in Prozedur: hbtn:= FindWindowex(Appl2,0,nil,'Textfeld'); hbtn:= FindWindowex(Appl2,0,'Textfeld',nil); Kurze und knappe Frage: wie findet er mein Textfeld :)? und wäre es ähnlich bei einem Memo?:) Danke im voraus :) |
AW: FindMemo, FindEdit
Appl2.. Ist definitiv nicht das Handle des Edit, Memo.
Schau dir doch mal die Definition von ![]() gruss |
AW: FindMemo, FindEdit
appl2 ist der Parameter für mein zweites programm (application2) oder oft auch hwnd..
(Appl2 := FindWindow(nil, 'FormvonProgramm2'); aber wie gesagt.. daran liegt der Fehler nicht.. meine appl2 findet er aber mein 'Textfeld' nicht.. |
AW: FindMemo, FindEdit
Zitat:
1. Fenster (Child) enumerieren alle ChildWindows die sich auf der anderen Anwendung befinden. 2. Nachdem das korrekte Handle des Edit Feld gefunden wurde anhand seines Classen Namen "TEdit" zu 3 3.Beispiel: Text senden.
Delphi-Quellcode:
SendMessage(MeinEditHandle, WM_SETTEXT, 0, textstring);
Es nutzt dir gar nichts wenn du das Handle der Anwendung verwendest um eine Message an ein ChildWindow dieser Anwendung (In dem Fall TEdit) zu senden ohne das Handle des besagten zu kennen. gruss |
AW: FindMemo, FindEdit
Vielleicht hätte ich mehr Code zeigen sollen tut mir Leid..
Code:
Mein Programm kommt garnicht zum Senden des Textes, da er das Edit nicht findet..
Appl2 := FindWindow(nil, 'FormvonProgramm2');
if Appl2 <> 0 then //klappt:) begin hbtn:= FindWindowex(Appl2,0,nil,'Textfeld'); if hbtn<>0 then //klappt nicht:(... edit nicht gefunden. begin SendMessage(hbtn, WM_SETTEXT, 0, Textstring); end else showmessage('Edit nicht gefunden'); end else showmessage ('appl2 nicht gefunden'); |
AW: FindMemo, FindEdit
Verwende bitte die Delphi Formatierung für Delphi Code.. Danke.
Der Code kommt nur BIS zu deiner Anwendung. Wie ich schon sagte du musst die ChildWindows enumerieren bis du das handle des TEdit erfahren hast. Dann habe ich dich gebeten dir einmal die Funktion von FindWindowEx anzusehen. (Hast gemacht?) Wenn ja dann würdest du verstehen warum FindWindowEx nicht funktioniert mit einem Handle 0 für das ChildWindow Was also willst du finden mit einem 0 Handle ? Ohne das du in dem Fremden Fenster die ChildWindows enumerierst. Zitat:
Wenn du 0 eingibst beginnt die suche nach dem Handle in der ZOrder so wie die Controls auf deinem Window abgelegt sind. gruss |
AW: FindMemo, FindEdit
Zitat:
Zitat:
Fällt dir was auf? ;-) |
AW: FindMemo, FindEdit
Beispiel. (copy\paste)
Delphi-Quellcode:
gruss
function EnumChildProc(AHandle: THandle; AItems: TStrings): BOOL; stdcall;
var buffer: array[0..255] of Char; caption: array[0..255] of Char; begin Result := True; GetClassName(AHandle, buffer, SizeOf(buffer)-1); SendMessage(AHandle, WM_GETTEXT, 256, Integer(@caption)); AItems.Add(Format('Handle: %d, Class: %s, Text: %s', [AHandle, buffer, caption])); end; //... procedure TForm1.Button1Click(Sender: TObject); var wHnd: THandle; wCls: PChar; begin wCls := PChar('YourTopWindowClassName'); // ex. TForm1 wHnd := FindWindow(wCls, nil); ListBox1.Clear; // Get window controls into the listbox EnumChildWindows(wHnd, @EnumChildProc, Integer(ListBox1.Items)); end; |
AW: FindMemo, FindEdit
Günter tut mir Leid beide heißen 'Textfeld'.. nicht 'TextFeld'.. mein Fehler:)
EWeiss hmm okay ich versuche es damit. |
AW: FindMemo, FindEdit
Zitat:
Günther meint etwas anderes.. vergleiche doch einfach mal die Parameter die du mit FindWindowEx übergibst. Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 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