Win32: Как перечислить дочерние процессы?

Что лучший способ состоит в том, чтобы перечислить дочерние процессы в настоящее время рабочего процесса под Win32? Я могу думать о нескольких способах сделать это, но они кажутся чрезмерно сложными и медленными. Вот требования для решения:

  1. Конкретно я должен знать - ли кто-либо там какие-либо процессы, в настоящее время работающие, которые были запущены текущим процессом.
  2. Будет работать на WinXP и не должен требовать распределительного специального DLL.
  3. Не должен требовать большого количества ЦП наверху (он будет работать периодически в фоновом режиме).
  4. Я буду в конечном счете писать это в Delphi, но я могу преобразовать из любого языка, в котором у Вас есть код. Главным образом я ищу самый эффективный набор Win32 API для использования.

Спасибо!

5
задан Scott Bussinger 20 January 2010 в 08:12
поделиться

1 ответ

Вы можете использовать API Toolhelp

#include <tlhelp32.h>

Process32First() 

и Loop, используя

Process32Next()

http://www.codeproject.com/kb/threads/processes.aspx

Редактировать delphi

uses tlhelp32;

procedure FillAppList(Applist: Tstrings); 
var   Snap:THandle; 
        ProcessE:TProcessEntry32; 
begin 
     Applist.Clear; 
     Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
     ProcessE.dwSize:=SizeOf(ProcessE); 
     if Process32First(Snap,ProcessE) then 
     begin 
          Applist.Add(string(ProcessE.szExeFile)); 
          while Process32Next(Snap,ProcessE) do 
                 .. compare parent id
      end 
      CloseHandle(Snap); 
end;
5
ответ дан 14 December 2019 в 19:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: