Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Titelloses Fenster eines Fremdprogrammes positionieren?

  Alt 9. Mär 2009, 03:15
Ich hab's jetzt endlich geschafft, das richtige Fensterhandle und die richtigen Fensterkoordinaten zu bekommen. Dazu musste ich die Funktion GetMainAppWndFromPid etwas ändern:

Delphi-Quellcode:
function GetMainAppWndFromPid(PID: DWORD): THandle;
type
  PSearch = ^TSearch;
  TSearch = record
    PID: DWORD;
    Wnd: THandle;
  end;
var
  SearchRec: TSearch;

  function EnumWindowsProc(Wnd: THandle; Res: PSearch): Boolean; stdcall;
  var
    WindowPid: DWORD;
  begin
    WindowPid := 0;
    GetWindowThreadProcessId(Wnd, @WindowPid);
    if (WindowPid = Res^.PID) then //and IsMainAppWindow(Wnd) then // <--- <--- <---
    begin
      Res^.Wnd := Wnd;
      Result := False;
    end
    else
      Result := True;
  end;

begin
  SearchRec.PID := PID;
  SearchRec.Wnd := 0;
  EnumWindows(@EnumWindowsProc, Integer(@SearchRec));
  Result := SearchRec.Wnd;
end;
Ich habe die Bedingung and IsMainAppWindow(Wnd) rausgenommen (s. oben), weil mein gesuchtes Fenster kein Hauptfenster hat. Die Frage ist jetzt aber, wie ich diese Funktion so verallgemeinern kann, dass sie mit allen Fenstertypen funktioniert?
  Mit Zitat antworten Zitat