Главная / FAQ по Builder'у / 115 Как получить список всех...

115 Как получить список всех системных задач?



#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
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz