//需要头文件
#include<Tlhelp32.h>
int KillProcess(LPCSTR pszProcessName)
{
int res = 0;
HANDLE handle; //¶¨ÒåCreateToolhelp32Snapshotϵͳ¿ìÕÕ¾ä±ú
HANDLE handle1; //¶¨ÒåÒª½áÊø½ø³Ì¾ä±ú
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//»ñµÃϵͳ¿ìÕÕ¾ä±ú
PROCESSENTRY32 *info; //¶¨ÒåPROCESSENTRY32½á¹¹×ÖÖ¸
//PROCESSENTRY32 ½á¹¹µÄ dwSize ³ÉÔ±ÉèÖÃ³É sizeof(PROCESSENTRY32)
info=new PROCESSENTRY32;
info->dwSize=sizeof(PROCESSENTRY32);
//µ÷ÓÃÒ»´Î Process32First º¯Êý£¬´Ó¿ìÕÕÖлñÈ¡½ø³ÌÁбí
Process32First(handle,info);
//Öظ´µ÷Óà Process32Next£¬Ö±µ½º¯Êý·µ»Ø FALSE Ϊֹ
do
{
info->szExeFile; //Ö¸Ïò½ø³ÌÃû×Ö
//strcmp×Ö·û´®±È½Ïº¯ÊýͬҪ½áÊøÏàͬ
if( strcmp(pszProcessName,info->szExeFile) == 0 )
{
//PROCESS_TERMINATE±íʾΪ½áÊø²Ù×÷´ò¿ª,FALSE=¿É¼Ì³Ð,info->th32ProcessID=½ø³ÌID
handle1=OpenProcess(PROCESS_TERMINATE,FALSE,info->th32ProcessID);
//½áÊø½ø³Ì
res = TerminateProcess(handle1,0);
}
}while(Process32Next(handle,info)!=FALSE);
CloseHandle(handle);
return res;
}
int KillProcess2(LPCSTR pszWindowTitle)
{
HANDLE hProcessHandle;
ULONG nProcessID;
HWND TheWindow;
TheWindow = ::FindWindow( NULL, pszWindowTitle );
::GetWindowThreadProcessId(TheWindow, &nProcessID );
hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, nProcessID );
return ::TerminateProcess( hProcessHandle, 4 );
}
int CreateNewProcess(LPCSTR pszExeName)
{
PROCESS_INFORMATION piProcInfoGPS;
STARTUPINFO siStartupInfo;
SECURITY_ATTRIBUTES saProcess, saThread;
ZeroMemory( &siStartupInfo, sizeof(siStartupInfo) );
siStartupInfo.cb = sizeof(siStartupInfo);
saProcess.nLength = sizeof(saProcess);
saProcess.lpSecurityDescriptor = NULL;
saProcess.bInheritHandle = true;
saThread.nLength = sizeof(saThread);
saThread.lpSecurityDescriptor = NULL;
saThread.bInheritHandle = true;
return ::CreateProcess( NULL
, (LPTSTR)pszExeName
, &saProcess
, &saThread, false,
CREATE_DEFAULT_ERROR_MODE
, NULL, NULL
, &siStartupInfo
, &piProcInfoGPS
);
}