头文件#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;
}
void CProcessDlg::OnBnClickedButton5()
{
UpdateData(TRUE);
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(PROCESSENTRY32);
BOOL bResult=Process32First(hSnapshot,&pe32);
while(bResult)
{
CString str=pe32.szExeFile;
if(str==v_softname)
{
this->MessageBox(L"查找到进程");
break;
}
else
{
bResult=Process32Next(hSnapshot,&pe32);
}
}
CloseHandle(hSnapshot);
//利用查找到的进程ID,打开进程:
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
//关闭进程
BOOL bRet = TerminateProcess(hProcess,0);
if(bRet)
this->MessageBox(L"success");
else
this->MessageBox(L"could not");
UpdateData(FALSE);
}
|