Список запущенных приложений

Решение

procedure TForm1.Button1Click(Sender: TObject);
var
  Wnd: hWnd;
  buff: array [0..127] of char;
begin
  ListBox1.Clear;
  Wnd := GetWindow(Handle, gw_HWndFirst);
  while Wnd <> 0 do begin                   // Не показываем:
    if (Wnd <> Application.Handle)          // Собственное окно
      and IsWindowVisible(Wnd)              // Невидимые окна
      and (GetWindow(Wnd, gw_Owner) = 0)    // Дочерние окна
      and (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then begin
        GetWindowText(Wnd, buff, sizeof(buff));
        ListBox1.Items.Add(StrPas(buff));
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
  ListBox1.ItemIndex := 0;
end;
[Nikolaev Igor]