![]() |
Re: Titelloses Fenster eines Fremdprogrammes positionieren?
Zitat:
Delphi-Quellcode:
Mit diesem Code kann ich zwar ein anderes Fenster bewegen, aber - wie Luckie bemerkt hat - funktioniert offensichtlich das Identifizieren des gesuchten Fensters mit "FindWindow('#32770', nil)" nicht, da ein anderes Fenster bewegt wird und nicht dasjenige, für das ich mit WinSpy++ den Class Name gefunden habe. Also wieder zurück an den Start und mit einer anderen Methode das gewünschte Fensterhandle finden.
SetWindowPos(AHandle,
HWND_TOPMOST, rc.Left, rc.Top-100, rc.Right - rc.Left, rc.Bottom - rc.Top, SWP_NOSIZE or SWP_NOACTIVATE or SWP_SHOWWINDOW); |
Re: Titelloses Fenster eines Fremdprogrammes positionieren?
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:
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?
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 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