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