Шаг 32 - Сканируем список процессов

В прошлом шаге мы убедились, что у нас нет инструмента, с помощью которого мы можем просмотреть список всех процессов в Windows 98. Но мы можем такой инструмент создать. В свое время Microsoft создала специальную библиотеку ToolHelp.Dll, используя которую можно получить доступ к информации о системе. Вот мы с ее помощью и попробуем получить список процессов.

Итак, давайте создадим приложение на базе MFC AppWizard и как Dialog Based. Поместим на диалог кнопку и элемент управления ListBox, который свяжем с помощью ClassWizard с переменной m_List1 типа Control и напишем код реакции на нажатие кнопки:

// ScanProcessDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ScanProcess.h"
#include "ScanProcessDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include "tlhelp32.h"

......

void CScanProcessDlg::OnScan() 
{
	m_List1.ResetContent(); 
	HANDLE hSnap;
 	hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hSnap == NULL) 
	{
		AfxMessageBox("Error Load ToolHelp");
	}
	PROCESSENTRY32 proc;
	if (Process32First(hSnap, &proc))
	{
		m_List1.AddString(proc.szExeFile);
		while (Process32Next(hSnap, &proc)) 
		{
		m_List1.AddString(proc.szExeFile);
		}
	}
}

В заголовочном файле tlhelp32.h находятся описания функций.

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

32.gif (4993 b)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 9.11.2000