首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

终止一个进程,请教代码哪里有有关问题,帮忙指出

2012-03-08 
终止一个进程,请问代码哪里有问题,帮忙指出voidKillProcessFromName(LPCTSTRname)int_tmain(intargc,_TCH

终止一个进程,请问代码哪里有问题,帮忙指出
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);
}

热点排行