Вернуться к статье

Листинг 1. Получение списка действующих процессов.

void CProcessBrowserDlg::LoadProcesses()
{
	HANDLE		hSnapshot;
	BOOL		bRet;
	PROCESSENTRY32	peProcessEntry;
	hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
	if( hSnapshot != NULL )
	{
		peProcessEntry.dwSize = 
			sizeof( PROCESSENTRY32 );
		bRet = Process32First( hSnapshot,&peProcessEntry );
		while( bRet )
		{
			…………………
			bRet = Process32Next
			   ( hSnapshot,&peProcessEntry );
		}
		CloseHandle( hSnapshot );
	}
}


Вернуться к статье

Листинг 2. Получение списка загруженных модулей.

void CProcessBrowserDlg::LoadModules
	(DWORD dwProcessID)
{
	HANDLE			hSnapshot;
	BOOL			bRet;
	MODULEENTRY32		meModuleEntry;
	hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE,dwProcessID );
	if( hSnapshot != NULL )
	{
		meModuleEntry.dwSize = sizeof
			( MODULEENTRY32 );
		bRet = Module32First( hSnapshot,&meModuleEntry );
		while( bRet )
		{
			……………………………….
			bRet = Module32Next
			  ( hSnapshot,&meModuleEntry );
		}
		CloseHandle( hSnapshot );
	}
}


Вернуться к статье

Листинг 3. Получение списка выделенных блоков и списка выделенных областей.

void CProcessBrowserDlg::LoadHeap
	(DWORD dwProcessID)
{
	HANDLE			hSnapshot;
	BOOL			bRet;
	BOOL				bEntryRet;
	HEAPLIST32			hlHeapList;
	HEAPENTRY32			heHeapEntry;
	hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPHEAPLIST,dwProcessID );
	if( hSnapshot != NULL )
	{
		hlHeapList.dwSize = sizeof( HEAPLIST32 );
		bRet = Heap32ListFirst( hSnapshot,&hlHeapList );
		while( bRet )
		{
			heHeapEntry.dwSize = sizeof( HEAPENTRY32 );
			bEntryRet = Heap32First( &heHeapEntry,
			dwProcessID,hlHeapList.th32HeapID );
			while( bEntryRet )
			{
				………….
				bEntryRet = Heap32Next( &heHeapEntry );
			}
			bRet = Heap32ListNext( hSnapshot,&hlHeapList );
		}
		CloseHandle( hSnapshot );
	}
}


Вернуться к статье