Вернуться к статье
Листинг 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 ); } }
Вернуться к статье