Hallo,
also ich bin jetzt schon ne ganze Zeit lang am probieren, aber irgendwie klappt das nicht ganz.
Ich besorge mir den
Handle von meinem Hauptprogramm folgend:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
myHandle : hwnd;
begin
myHandle := FindWindowByTitle('Programm xy');
end;
function FindWindowByTitle(WindowTitle: string): HWND;
var
NextHandle: HWND;
NextTitle: array[0..260] of char;
begin
//Get the first window
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
while NextHandle > 0 do
begin
// retrieve its text
GetWindowText(NextHandle,NextTitle, 255);
if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
begin
Result := NextHandle;
Exit;
end
else
// Get the next window
NextHandle := GetWindow(Nexthandle, GW_HWNDNEXT);
end;
Result := 0;
end;
Nun habe ich den
handle zum Hauptprogramm. Das Hauptprogramm öffnet nun ein komplett neues Fenster.
So wie ich das gesehen habe ist dies nicht bei den ChildWindows vom Hauptprogramm aufgeführt.
Ich bin mir da nicht sicher, aber viell. sind beide in einem Thread. Ich wollte nachschauen.
Aber ein
EnumThreadWindows(GetDlgCtrlID(myHandle), @EnumerateThreadWindows, 0)
scheitert daran das GetDlgCtrlID immer 0 zurück gibt.
Nun hoffe ich doch ganz stark das mir jemand sagen kann wie ich mir die
Handle aller neu geöffneten (es können auch mehrere Fenster sein) Fenster des Hauptprogramms besorgen kann.
Danke schonmal.
Robert