Entwickler-Ecke

Windows API - Zählen wieviele Windows Fenster geöffnet sind


seddto - So 04.04.04 17:06
Titel: Zählen wieviele Windows Fenster geöffnet sind
Hallo,

Ich möchte gerne einfach nur zählen wieviel Windows Fenster gerade geöffnet sind um das mit einem Vergleichswert zu vergleichen. Kann mir jemand sagen wie das geht?

Danke & LG Seddto


toms - So 04.04.04 17:12

Hi,

Folgender Code zählt alle Fenster, welche einen Button in der Taskleiste haben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
 WinCount: Integer = 0;

function EnumWindowsProc(Wnd: HWND; lParam: lParam): BOOL; stdcall;
begin
  Result := True;
  if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
    ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0or
    (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and
    (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0then
     Inc(WinCount);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Param: Longint; 
begin
  EnumWindows(@EnumWindowsProc, Param);
  ShowMessage(Inttostr(WinCount));
end;


seddto - So 04.04.04 17:27

Danke für die schnelle Antwort. Gibt es denn auch noch eine Möglichkeit geöffnete Fenster die nicht in der Taskleiste sind zu finden?


Motzi - So 04.04.04 22:34

Einfach nur die If-Abfrage rausnehmen und das Inc(WinCount); stehen lassen..! ;)