VC++寻找进程是否存在

来源:互联网 发布:花屋小三郎 知乎 编辑:程序博客网 时间:2024/05/20 06:22

1.添加头文件

#include <psapi.h>

#pragma comment ( lib, "psapi.lib" )

//在VS2010里面本身有,在VC6.0,不存在,点击这里下载http://pan.baidu.com/s/1sjQ5hYt

2.//以下是在控制台里面运行的函数代码,如果在MFC中,自己修饰去一下,例如DWORD CMyDlg::FindProcess(char *strProcessName)

DWORD FindProcess(char *strProcessName)
{
    DWORD Process[1024], cbNeed, cbMNeed;
    HMODULE hMod[1024];
    HANDLE hProcess;
    char ProcessName[MAX_PATH];
 
    if ( !EnumProcesses( Process, sizeof(Process), &cbNeed ) ) 
  return 0;
    for(int i=0; i< (int) (cbNeed / sizeof(DWORD)); i++)
    {
        hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Process[i]);
        EnumProcessModules(hProcess, hMod, sizeof(hMod), &cbMNeed);
        GetModuleFileNameEx( hProcess, hMod[0], ProcessName,sizeof(ProcessName));
  
        if(strstr(ProcessName, strProcessName))
        {
            return(Process[i]);
        }
    }
 
 
    return 0;
}

0 0