您的位置:首页 > 其它

获取windows进程列表,并以字符串形式查询是否存在某一进程

2012-01-14 16:32 483 查看
需要的头文件:
#include <windows.h>
#include <Tlhelp32.h>
 
bool haveThisProcess(char *p)
{
    WCHAR process[128];
    mbstowcs(process, p, 128); //把char*转化为wchar_t*
    PROCESSENTRY32 pe32;
        // 在使用这个结构之前,先设置它的大小
    pe32.dwSize = sizeof(pe32);
    // 给系统内的所有进程拍一个快照
    HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if(hProcessSnap == INVALID_HANDLE_VALUE)
    {
        printf(" CreateToolhelp32Snapshot调用失败! /n");
           //return;
    }
    // 遍历进程快照,轮流显示每个进程的信息
    BOOL bMore = ::Process32First(hProcessSnap, &pe32);
    while(bMore)
    {
  //      wcout << pe32.szExeFile << endl;
  //      cout << pe32.th32ProcessID << endl;
        if(0 == wcscmp(pe32.szExeFile, process))
        {
            ::CloseHandle(hProcessSnap);
            return true;
        }
        bMore = ::Process32Next(hProcessSnap, &pe32);
    }
    // 不要忘记清除掉snapshot对象
    ::CloseHandle(hProcessSnap);
    return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows