msdn 有个sample http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701(v=vs.85).aspx ,稍作修改即可
#include
#include
#include
// Forward declarations:
BOOL GetProcessList( );
void printError( TCHAR* msg )
{
printf(msg);
}
void main( )
{
GetProcessList( );
}
BOOL GetProcessList( )
{
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
DWORD dwPriorityClass;
// Take a snapshot of all processes in the system.
hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
printError( "CreateToolhelp32Snapshot (of processes)" );
return( FALSE );
}
// Set the size of the structure before using it.
pe32.dwSize = sizeof( PROCESSENTRY32 );
// Retrieve information about the first process,
// and exit if unsuccessful
if( !Process32First( hProcessSnap, &pe32 ) )
{
printError( "Process32First" ); // Show cause of failure
CloseHandle( hProcessSnap ); // Must clean up the
// snapshot object!
return( FALSE );
}
// Now walk the snapshot of processes, and
// display information about each process in turn
do
{
printf( "\n\n"
"=====================================================" );
printf( "\nPROCESS NAME: %s", pe32.szExeFile );
printf( "\n"
"-----------------------------------------------------" );
// Retrieve the priority class.
dwPriorityClass = 0;
hProcess = OpenProcess(
PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
if( hProcess == NULL )
printError( "OpenProcess" );
else
{
dwPriorityClass = GetPriorityClass( hProcess );
if( !dwPriorityClass )
printError( "GetPriorityClass" );
CloseHandle( hProcess );
}
printf( "\n process ID = 0x%08X", pe32.th32ProcessID );
printf( "\n thread count = %d", pe32.cntThreads );
printf( "\n parent process ID = 0x%08X",
pe32.th32ParentProcessID );
printf( "\n Priority Base = %d", pe32.pcPriClassBase );
if( dwPriorityClass )
printf( "\n Priority Class = %d", dwPriorityClass );
// List the modules and threads associated with this process
//ListProcessModules( pe32.th32ProcessID );
//ListProcessThreads( pe32.th32ProcessID );
if (stricmp(pe32.szExeFile, "notepad.exe") == 0)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
DWORD dwExitCode = 0;
if (GetExitCodeProcess(hProcess, &dwExitCode))
{
TerminateProcess(hProcess, dwExitCode);
printf( "\n TerminateProcess notepad.exe +++");
}
else
{
DWORD error = GetLastError();
printf( "\n TerminateProcess notepad.exe failed, error code = %d ---", error);
}
CloseHandle( hProcess );
}
} while( Process32Next( hProcessSnap, &pe32 ) );
CloseHandle( hProcessSnap );
return( TRUE );
}