:: :: 博问 :: 闪存 :: :: 联系 :: :: 管理 ::
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++;
                }
            }
        }
    }

posted on 2006-09-15 19:17  dtor  阅读(535)  评论(0编辑  收藏  举报