转载自:http://blog.sina.com.cn/s/blog_a473b7dc0101foir.html
头文件#include"tlhelp32.h"
voidManagerDlg::OnBnClickedOk()
{
DWORD procID=this->GetProcessidFromName(L"qq.exe",LLNPath);
if(procID>0)
{
HANDLE handle=OpenProcess(PROCESS_TERMINATE,FALSE,procID);
BOOL ret=TerminateProcess(handle,4);//这里必须是4,否则无法结束进程
if(ret==0)
{
AfxMessageBox(L"can't Terminate the Specifize Process");
return;
}
}
}
DWORDManagerDlg::GetProcessidFromName(CString processName,CString &processPath)
{
PROCESSENTRY32 pe;
MODULEENTRY32 me;
DWORD id=0;
HANDLE mehandle;
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize=sizeof(PROCESSENTRY32);
BOOL ret=Process32First( hSnapshot,&pe);
if(!ret)
return0;
while(1)
{
pe.dwSize=sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot,&pe)==FALSE)
break;
if(processName.CompareNoCase(pe.szExeFile)==0)
{
id=pe.th32ProcessID;
//获取当前进程所在路径
mehandle=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,id);
me.dwSize=sizeof(MODULEENTRY32);
Module32First(mehandle,&me);
processPath=me.szExePath;
break;
}
}
CloseHandle(hSnapshot);
returnid;
}