В прошлом шаге мы убедились, что у нас нет инструмента, с помощью которого мы можем просмотреть список всех процессов в 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 находятся описания функций.
Если вы посмотрите результат работы этой программы, то увидите, что процессов намного больше. В том числе и сможете увидеть процессы, которые не видели в прошлом шаге.