请教大侠,我想在程序里判断某个exe程序是否正在运行,请问如何实现谢谢!
急!

解决方案 »

  1.   

    遍历进程列表,看看能否找到指定的exe
      

  2.   

    http://topic.csdn.net/t/20010719/15/200596.html
      

  3.   

    早上刚写过:定义一个类:
    //此类用于枚举进程用
    class CProcessIterator {
    protected:
    DWORD* m_pids; // array of procssor IDs
    DWORD m_count; // size of array
    DWORD m_current; // next array item
    public:
    CProcessIterator();
    ~CProcessIterator(); DWORD GetCount() { return m_count; }
    DWORD First();
    DWORD Next() {
    return m_pids && m_current < m_count ? m_pids[m_current++] : 0;
    }
    };class CProcessModuleIterator {
    protected:
    HANDLE m_hProcess; // process handle
    HMODULE* m_hModules; // array of module handles
    DWORD m_count; // size of array
    DWORD m_current; // next module handle
    public:
    CProcessModuleIterator(DWORD pid);
    ~CProcessModuleIterator();
    HANDLE GetProcessHandle() { return m_hProcess; }
    DWORD GetCount() { return m_count; }
    HMODULE First();
    HMODULE Next() {
    return m_hProcess && m_current < m_count ? m_hModules[m_current++] : 0;
    }
    };
    在cpp中:
    #include "psapi.h"   //枚举进程用 CProcessIterator itp;
    CString str;


    for (DWORD pid=itp.First(); pid; pid=itp.Next()) 
    {

    TCHAR modname[_MAX_PATH];
    CProcessModuleIterator itm(pid);
    HMODULE hModule = itm.First(); // .EXE
    if (hModule) 
    {
    GetModuleBaseName(itm.GetProcessHandle(),hModule, modname, _MAX_PATH);
    if(strcmp(modname,"a.exe")==0)
    {

    HANDLE hp=OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE,FALSE,pid);
    if (hp)
    {

    TerminateProcess(hp,0);//结束该进程

    }
    CloseHandle(hp);

    break;

    }
     

    }

    }
    以上功能就是遍历进程表,发现a.exe后,关掉它
      

  4.   

    谢谢!
    找不到#include "psapi.h"   //枚举进程用这个文件
    请问怎么解决
      

  5.   

    谢谢zhucde(【風間苍月】★MVP★【虚拟闲人】) 
    不过你给的代码不完整,能够给完整的吗,谢谢