Einzelnen Beitrag anzeigen

robert23

Registriert seit: 16. Aug 2006
20 Beiträge
 
#1

Vom Hauptprogramm aus handle zu neu geöffnetem Fenster

  Alt 16. Aug 2006, 18:38
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
  Mit Zitat antworten Zitat