|
// *********************************************************
// リストビューにプロセス一覧を設定
// 戻り値 : 無し
// *********************************************************
void LboxNT5::EnumProcess( LboxListview *Lview )
{
Lview->Initialize();
Lview->AddColumn( LVCFMT_LEFT, 100, "" );
Lview->AddColumn( LVCFMT_LEFT, 100, "ID" );
Lview->AddColumn( LVCFMT_LEFT, 100, "親プロセス ID" );
Lview->AddColumn( LVCFMT_LEFT, 100, "実行ファイル" );
Lview->AddColumn( LVCFMT_LEFT, 100, "実行されたスレッド" );
Lview->AddColumn( LVCFMT_LEFT, 100, "スレッド用基準Priority" );
Lview->AddColumn( LVCFMT_LEFT, 100, "参照カウント" );
Lview->AddColumn( LVCFMT_LEFT, 100, "Default Heap ID" );
Lview->AddColumn( LVCFMT_LEFT, 100, "Module ID" );
HANDLE hSnapshot;
PROCESSENTRY32 pe;
BOOL bRet;
int nCnt;
hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if ( hSnapshot != (HANDLE)-1 ) {
ZeroMemory( &pe, sizeof(PROCESSENTRY32) );
pe.dwSize = sizeof(PROCESSENTRY32);
bRet = Process32First( hSnapshot, &pe );
nCnt = 0;
while( bRet ) {
nCnt++;
Lview->AddRow();
Lview->SetColumnPrintf( 0, "%lu", nCnt );
Lview->SetColumnPrintf( 1, "%lu", pe.th32ProcessID );
Lview->SetColumnPrintf( 2, "%lu", pe.th32ParentProcessID );
Lview->SetColumnPrintf( 3, "%s", pe.szExeFile );
Lview->SetColumnPrintf( 4, "%ld", pe.cntThreads );
Lview->SetColumnPrintf( 5, "%lu", pe.pcPriClassBase );
Lview->SetColumnPrintf( 6, "%lu", pe.cntUsage );
Lview->SetColumnPrintf( 7, "%lu", pe.th32DefaultHeapID );
Lview->SetColumnPrintf( 8, "%lu", pe.th32ModuleID );
ZeroMemory( &pe, sizeof(PROCESSENTRY32) );
pe.dwSize = sizeof(PROCESSENTRY32);
bRet = Process32Next( hSnapshot, &pe );
}
CloseHandle( hSnapshot );
Lview->Fit();
}
}
| |