CString m_st_processName="";
CString m_st_findProcessName="MonitorClient.exe"; //關閉的程式名
DWORD m_i_processID=0;
HANDLE hProcess;
int m_i_runProcessNum=0;
//EnumProcesses方法
DWORD m_allProcessArray[1024], m_i_arraySize, m_i_processNum;
unsigned int m_i_index=0;
HMODULE hMod;//控制代碼
char m_szProcessName[1024]="";//擷取名稱
// 擷取進程識別欄位表.
if ( !EnumProcesses( m_allProcessArray, sizeof(m_allProcessArray), &m_i_arraySize ))
{
// return FALSE;
AfxMessageBox(_T("找不到"));
}
//計算有多少個進程.
m_i_processNum = m_i_arraySize / sizeof(DWORD);
//尋找每個進程.
for ( m_i_index = 0; m_i_index < m_i_processNum; m_i_index++ )
{
m_i_processID=m_allProcessArray[m_i_index];
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_TERMINATE |PROCESS_VM_READ,FALSE, m_i_processID );
// 擷取進程名稱.
if ( hProcess )
{
if ( EnumProcessModules( hProcess, &hMod, sizeof(HMODULE),&m_i_arraySize))
{
GetModuleBaseName( hProcess, hMod, m_szProcessName, sizeof(m_szProcessName) );
m_st_processName.Format("%s",m_szProcessName);
if(m_st_processName.Find(m_st_findProcessName)>=0)
{
TerminateProcess(hProcess,0); //這裡可以進來,但是運行後,無法關閉進程
CloseHandle(hProcess); //進程在工作管理員中還存在,不知道為什麼
m_i_runProcessNum++;
}
}
}
}