终止一个进程,请问代码哪里有问题,帮忙指出
void KillProcessFromName(LPCTSTR name);
int _tmain(int argc, _TCHAR* argv[])
{
KillProcessFromName( "explorer.exe ");
return 0;
}
void KillProcessFromName(LPCTSTR name)//name为你要终止的进程的名称,Win9X则需包括路径
{
PROCESSENTRY32 pe;//定义一个PROCESSENTRY32结类型的变量
HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);// 创建快照句柄
pe.dwSize = sizeof(PROCESSENTRY32);//一定要先为dwSize赋值
if (Process32First(hShot,&pe))
{
do
{
if (strcmp(pe.szExeFile,name)==0) //判断此进程是否为你要终止的进程
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);//如果是就利用其ID获得句柄
TerminateProcess(hProcess,0);//终止该进程
}
while(Process32Next(hkz,&pe));
}
CloseHandle(hShot);//最后别忘记Close
}
[解决办法]
void KillProcessFromName(LPCTSTR name)
{
PROCESSENTRY32 pe;
HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hShot,&pe))
{
do
{
if (_stricmp(pe.szExeFile,name)==0)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);
TerminateProcess(hProcess,0);
break; // 要关闭所有的同名进程就不要break
}
}
while(Process32Next(hShot,&pe));
}
CloseHandle(hShot);
}