Hallo,
ich habe folgendes Problem.
Ich möchte mit meinem Programm einige Fenster ausblenden. Dies mache ich über deren Titel bzw. Schlagwörter, die in den Titeln der momentan vorhandenen Fenster vorkommen müssen.
Ein und Ausblenden funktionieren so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| List1.Clear; List2.Clear; EnumWindows(@EnumWinProc, 0); for t := 0 to ListBox1.Count-1 do begin for q := 0 to List1.Count-1 do if AnsiContainsText(List1[q],Form9.ListBox1.Items[t]) then List2.Add(List1[q]); if Hide then for q := 0 to List2.Count-1 do ShowWindow(FindWindow(nil, PChar(List2[q])), SW_HIDE); if Show then for q := 0 to List2.Count-1 do ShowWindow(FindWindow(nil, PChar(List2[q])), SW_SHOW); |
Wenn ich nun 1 Fenster (*eines*) habe, dann klappt das auch. Habe ich aber 2 Fenster gleichen Namens, dann klappt das ganze nicht. Angenommen man setzt das Schlagwort "Editor" und hat 2 Fenster, die "Unbenannt - Editor" heißen, dann versteckt er nur 1 Fenster und das andere bleibt offen.
Es liegt sicherlich daran, dass eine Zuordnung über den Titel nicht eindeutig ist. Man bräuchte die ID der Fenster.
Auch ist mir aufgefallen, dass über EnumWindows auch Fenster gelistet werden, die garkeinen Eintrag in der Taskbar haben. Das sind ja dann weniger Fenster als eher Prozesse ??
Habt ihr eine Idee, wie ich das Problem lösen könnte ?
Ciao LHUser