MFC獲得指定進程的ID,路徑及終止進程

轉載自: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;


}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章