#include <TlHelp32>
...
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//сначала необходимо создать снимок состояния системы
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
//параметр TH32CS_SNAPPROCESS означает, что мы хотим узнать только информацию
//о процессах
bool Result = true;
//опишем структуру, в которой будет храниться эта информация
PROCESSENTRY32 *ProcEntry = new PROCESSENTRY32();
AnsiString FileName;
/* В принципе, процедура получения информации весьма похожа на получение
списка файлов в папке. Там тоже сначала вызываешь FindFirst(...), а затем
FindNext(...) */
Process32First(hSnapshot, ProcEntry);
FileName = ExtractFileName(StrPas(ProcEntry->szExeFile));
//запишем в ListBox полученную информацию
ListBox1->Items->Add(IntToStr(ProcEntry->th32ProcessID) + ": " + FileName);
/* Вызываемые функции - булевские. Поэтому, когда вернется false, значит,
информации больше нет => можно использовать цикл */
while(Result)
{
Result = Process32Next(hSnapshot, ProcEntry);
if(Result)
{
FileName = ExtractFileName(StrPas(ProcEntry->szExeFile));
ListBox1->Items->Add(IntToStr(ProcEntry->th32ProcessID) + ": " +
FileName);
}
}
delete ProcEntry;
//выгрузим из памяти системный снимок
CloseHandle(hSnapshot);
}
Sergey Kaluzhskiy 2:5055/89.27
Предыдущий вопрос
|
|
Следующий вопрос
источник
by jenyok
|