Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить список всех запущенных процессов

Delphi , Программа и Интерфейс , Процессы и Сервисы

Как получить список всех запущенных процессов

Поставь на форму список TListbox и кнопку TButton, по нажатию на кнопке напиши такой код:


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;

Перевод контента на русский язык:

Код, который вы предоставили, написан на Delphi и использует Windows API для получения списка запущенных процессов. Вот разбивка того, что код делает:

  1. Процедура Button1Click вызывается при клике кнопки с надписью "Button1".
  2. Она очищает содержимое контрола TListbox с именем ListBox1.
  3. Затем она использует функцию GetWindow для получения handle первого окна, которое является дочерним основному окну приложения (то есть форме Delphi).
  4. Код затем вступает в цикл, который продолжается до тех пор, пока не будет обработано все окна.
  5. Внутри цикла код проверяет каждое окно на соответствие следующим условиям:
    • Оно не является основным окном приложения (Wnd <> Application.Handle).
    • Оно видно (IsWindowVisible(Wnd)).
    • Оно не является дочерним окном (GetWindow(Wnd, gw_Owner) = 0).
    • Оно имеет панель заголовка (GetWindowText(Wnd, buff, sizeof(buff)) <> 0).
  6. Если окно соответствует этим условиям, код получает заголовок окна с помощью GetWindowText и добавляет его в контрол контрола Listbox как элемент.
  7. Наконец, код устанавливает фокус на первый элемент в контроле Listbox.

Вот предложенная альтернативная решение:

Вместо использования Windows API напрямую, вы можете использовать компонент TProcessList, предоставленный Delphi. Этот компонент обеспечивает способ отображения всех запущенных процессов и получения информации о них.

Вы можете добавить компонент TProcessList на форму и установить свойство Refresh в True. Затем в обработчик события клика кнопки вы можете проитерировать список процессов с помощью цикла:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  ListBox1.Clear;
  for i := 0 to ProcessList.Count - 1 do begin
    ListBox1.Items.Add(ProcessList.Processes[i].Name + ' (' +
      FormatFloat('0.000', ProcessList.Processes[i].CPUUsage) + ')');
  end;
end;

Код будет заполнить контрол Listbox списком запущенных процессов, а также их именами и процентами использования CPU.

Обратите внимание, что это подход более удобен и легче поддерживать, чем использовать Windows API напрямую.

Помощник Delphi позволяет получить список запущенных процессов с помощью процедуры TForm1.Button1Click(Sender: TObject), которая использует функцию GetWindow для поиска окон, а затем - функцию GetWindowText для получения имени окна, которое добавляется в


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 22:04:26/0.0061249732971191/0