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

Получение и анализ списка запущенных программ в Delphi с использованием диспетчера задач Windows

Delphi , Рабочий стол , TaskBar

Вопрос пользователя заключается в том, как получить список запущенных программ, отображаемых в табе "Приложения" диспетчера задач Windows, а также их расположение на жестком диске, используя язык программирования Delphi.

Решение проблемы

Для решения поставленной задачи можно использовать компонент Process Info, который включает в себя модуль AppInfo.pas. Этот модуль содержит функцию обратного вызова для перечисления окон, соответствующих требованиям диспетчера задач (неowned, без родительских окон, не являются окнами вспомогательных элементов интерфейса).

Код функции обратного вызова для перечисления окон выглядит следующим образом:

{$IFDEF DELPHI2007UP}
class function TAppWindowCollection.EnumWinProc(wHandle: HWND; lparam: integer): Bool;
{$ELSE}
function EnumWinProc(wHandle: HWND; lparam: integer): Bool; stdcall;
{$ENDIF}
// ... код проверки окна ...
if IsAppMainWin then
begin
  WindowItem := TAppWindowCollection(lparam).Add;
  // ... код получения текста и класса окна ...
  GetWindowThreadProcessId(wHandle, WindowItem.FProcessID);
end;
Result := True;

Дополнительно, для получения пути к исполняемому файлу, необходимо сначала найти процесс, которому принадлежит окно, используя API функцию GetWindowThreadProcessID. После получения идентификатора процесса, можно перечислить модули процесса и получить путь к основному исполняемому файлу.

Альтернативный ответ

Для самостоятельной реализации решения без использования сторонних библиотек, можно использовать следующий код:

program ApplicationList;
{$APPTYPE CONSOLE}
// ... подключение необходимых модулей ...
uses
  Winapi.Windows,
  Winapi.PsAPI;
function GetPathFromPID(const PID: cardinal): string;
// ... реализация функции получения пути к исполняемому файлу ...
function EnumWinProc(wHandle: HWND; lparam: integer): Bool; stdcall;
// ... реализация функции перечисления окон ...
procedure DoEnumWindows;
// ... реализация процедуры перечисления окон, используемой в консольном приложении ...
begin
  try
    DoEnumWindows;
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;
  ReadLn;
end.

Пример кода

В приведенном коде демонстрируется, как перечислить все основные окна приложений, определить их принадлежность к процессам и получить пути к исполняемым файлам этих процессов.

Выводы

Используя предложенные решения, разработчики на Delphi могут получить список запущенных программ и их расположение на жестком диске, что может быть полезно для различных приложений, требующих инспекции запущенных процессов и их взаимодействия с пользовательским интерфейсом.

Создано по материалам из источника по ссылке.

Запрос пользователя состоит в необходимости получить и проанализировать информацию о запущенных программах в среде Delphi, используя функционал диспетчера задач Windows.


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

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




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


:: Главная :: TaskBar ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 11:18:28/0.005314826965332/0