Ich glaub, ich bin zu blöd, um
EnumWindows zu benutzen. Folgenden Code benutze ich zum Testen:
Code:
function EnumWindowsProc(Hnd: HWND; Lines: TStrings): Boolean; stdcall;
var
FileName: Array[0..255] of Char;
begin
GetWindowModuleFileName(Hnd, @FileName, 255);
Lines.Add(InttoStr(Hnd) + ': ' + FileName);
if FileName = AppName then
begin
Result := False;
end
else
begin
Result := True;
end;
end;
und
Code:
AppName := ParamStr(0);
EnumWindows(@EnumWindowsProc, Integer(Form1.Memo1.Lines));
Doch komischerweise kommen in dieser Liste immer die gleichen Handles vor. Wenn ich die in einem ShowWindow-Aufruf verwende, veränder ich nicht das Fenster, das ich gewollt hab (also das meines Programmes), sondern irgendein anderes, meistens eins von meinem AntiVirus-Programm. Was heißt eigentlich genau "top-level-window"? Weil das, was ich gedacht habb, dass es heißt, kann es wohl nicht heißen, denn sonst hätt ich wohl kaum 30 dieser Fenster mit dem gleichen Pfad und Dateinamen gefunden.