![]() |
![]() ![]() ![]() ![]() |
|
Получение списка процессов в Windows 9x и NTDelphi , Программа и Интерфейс , Процессы и Сервисы
Автор: Евгений Пелега
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение списка процессов в Windows 9x/NT
Определяет список модулей, запущенных в настоящее время в системе, и заносит их
имена в список TStrings. На Win9x использует функции ToolHelp32,
на NT/2000/XP - библиотеку PSAPI.dll
Зависимости: Windows, Classes, PSAPI, TlHelp32
Автор: Евгений Пелега, drpass@mail.ru, Донецк
Copyright: Евгений Пелега
Дата: 26 апреля 2002 г.
***************************************************** }
procedure GetProcessList(var sl: TStrings);
var
pe: TProcessEntry32;
ph, snap: THandle; //дескрипторы процесса и снимка
mh: hmodule; //дескриптор модуля
procs: array[0..$FFF] of dword; //массив для хранения дескрипторов процессов
count, cm: cardinal; //количество процессов
i: integer;
ModName: array[0..max_path] of char; //имя модуля
begin
sl.Clear;
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
begin //если это Win9x
snap := CreateToolhelp32Snapshot(th32cs_snapprocess, 0);
if integer(snap) = -1 then
begin
exit;
end
else
begin
pe.dwSize := sizeof(pe);
if Process32First(snap, pe) then
repeat
sl.Add(string(pe.szExeFile));
until not Process32Next(snap, pe);
end;
end
else
begin //Если WinNT/2000/XP
if not EnumProcesses(@procs, sizeof(procs), count) then
begin
exit;
end;
for i := 0 to count div 4 - 1 do
begin
ph := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
false, procs[i]);
if ph > 0 then
begin
EnumProcessModules(ph, @mh, 4, cm);
GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName));
sl.Add(string(ModName));
CloseHandle(ph);
end;
end;
end;
end;
Пример использования: procedure TForm1.Button1Click(Sender: TObject); var tmp: TStrings; begin tmp := memo1.Lines; GetProcessList(tmp); end; Вот перевод текста на русский язык: Это фрагмент кода Delphi, который извлекает список запущенных процессов в системах Windows 9x и NT-основанных (включая XP, 2000). Код использует либо функции Вот разбивка кода:
Пример использования показывает, как вызывать эту процедуру из обработчика события клика кнопки, где результат хранится в компоненте Некоторые наблюдения:
В целом, этот код-снippet предоставляет функциональный способ извлечения списка запущенных процессов в системах Windows 9x и NT-основанных. Однако его ограничения и потенциальные проблемы должны быть адресованы для более robust реализации. В статье описывается процедура для получения списка процессов в Windows 9x и NT, которая использует функции ToolHelp32 или библиотеку PSAPI.dll. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Процессы и Сервисы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||