如何使用C ++关闭/终止进程的所有线程

时间:2012-04-27 18:42:18

标签: c++ multithreading winapi

使用Process名称,我获得了Process ID。之后使用进程ID,我得到与该进程相关的所有线程。 现在我想关闭/终止所有线程,之后我想退出/关闭进程本身。

如何使用线程ID关闭线程?以下方法列出了所有线程ID

BOOL GetAllThreads( DWORD dwOwnerPID ) 
{ 
     HANDLE hThreadSnap = INVALID_HANDLE_VALUE; 
     THREADENTRY32 te32; 

    // Take a snapshot of all running threads  
    hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 ); 
    if( hThreadSnap == INVALID_HANDLE_VALUE ) 
            return( FALSE ); 


    te32.dwSize = sizeof(THREADENTRY32 ); 
    if( !Thread32First( hThreadSnap, &te32 ) ) 
    {
         CloseHandle( hThreadSnap );        return( FALSE );
    }

    //Get all threads
    do 
     { 
           if( te32.th32OwnerProcessID == dwOwnerPID )
           {
            _tprintf( TEXT("\n     THREAD ID      = 0x%08X"), te32.th32ThreadID ); 
            _tprintf( TEXT("\n     base priority  = %d"), te32.tpBasePri ); 
            _tprintf( TEXT("\n     delta priority = %d"), te32.tpDeltaPri ); 
           }
    } while( Thread32Next(hThreadSnap, &te32 ) );

        _tprintf( TEXT("\n"));

    CloseHandle( hThreadSnap );
    return( TRUE );
}

0 个答案:

没有答案