Announcement

Collapse
No announcement yet.

running tasks

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • running tasks

    Hallo,

    ich möchte die laufenden Tasks wie sie in der Taskbar von Windows angezeigt werden ermitteln. Das habe ich bis jetzt mit folgendem Code versucht:
    <PRE>
    function EnumWindowsProc(Wnd: HWND; lParam: lParam): BOOL; stdcall;
    begin
    Result := True;
    if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
    ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
    (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and
    (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then
    Form1.Listbox1.Items.Add('Handle: ' + IntToStr(Wnd) + ',Text: ' + GetText(Wnd));
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    Param: Longint;
    begin
    ListBox1.Clear;
    EnumWindows(@EnumWindowsProc, Param);
    end;
    </PRE>

    Unter Windows 2000 werden auch wirklich nur die Tasks wie sie im Taskmanager stehen angezeigt. Aber wenn ich dasselbe unter WindowsXP teste, stehen da plötzlich noch drei "GDI+ Window" einträge.

    Weiß jemand was ich da noch falsch mache oder kennt jemand einen anderen (besseren) Weg um mein Ziel zu erreichen?
Working...
X