Windows编程:遍历所有进程(exe) 代码(C++)

遍历所有进程, 即任务管理器中所有的进程目录, 包含名称和进程ID.

返回字典: Key: 进程名字, Value: 进程ID.

代码:

/*
 * main.cpp
 *
 *  Created on: 2014.06.08
 *      Author: Spike
 */

/*vs 2012*/

#include <iostream>
#include <string>
#include <map>  

#include <windows.h>
#include <TlHelp32.h>  

using namespace std;  

bool traverseProcesses(std::map<std::string, int>& _nameID)
{
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(pe32);  

    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if(hProcessSnap == INVALID_HANDLE_VALUE) {
        std::cout << "CreateToolhelp32Snapshot Error!" << std::endl;;
        return false;
    }  

    BOOL bResult =Process32First(hProcessSnap, &pe32);  

    int num(0);  

    while(bResult)
    {
        std::string name = pe32.szExeFile;
        int id = pe32.th32ProcessID;  

        std::cout << "[" << ++num << "] : " <<"Process Name:"
            << name << "  " << "ProcessID:" << id<< std::endl;  

        _nameID.insert(std::pair<string, int>(name, id)); //字典存储
        bResult = Process32Next(hProcessSnap,&pe32);
    }  

    CloseHandle(hProcessSnap);  

    return true;
}  

int main()
{
    std::map<std::string, int> _nameID;  

    if (!traverseProcesses(_nameID)) {
        cout << "Start Process Error!" << endl;
    }  

    return 0;
}

输出:

作者:csdn博客 Spike_King

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, include
, 进程
, 代码
, std
, 32
, 遍历字典
字典遍历
异常代码 c0000005、贪吃蛇c语言代码、c语言代码、c 代码生成器、c 源代码,以便于您获取更多的相关知识。

时间: 2024-09-19 09:11:48

Windows编程:遍历所有进程(exe) 代码(C++)的相关文章

Windows编程:开启/关闭/遍历程序的类 代码(C++)

类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifndef TRAVERSEPROCESSMODEL_H #define TRAVERSEPROCESSMODEL_H #includ

Windows编程:遍历程序使用的动态链接库(dll) 代码(C++)

遍历程序使用的动态链接库(dll), 首先需要遍历所有进程, 匹配进程名称与进程ID, 然后根据进程名称, 输出所有使用的库(dll). 示例中Image.exe是预先启动的程序. 代码包含遍历进程的代码, 和输出动态链接库(dll)的代码. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <iomanip> #inclu

Windows编程:终止可执行(exe)程序 代码(C++)

终止可执行(exe)程序, 首先遍历进程, 找到进程名称对于的进程ID号, 然后根据进程ID, 终止进程. 示例代码: 包括遍历进程代码, 和关闭代码. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <string> #include <map> #include <windows.h> #inc

C++windows内核编程笔记day13 进程、线程与信号量

Windows进程 进程是一个容器,包含程序执行需要的代码.数据.资源等信息, windows进程的特点:每个进程都有自己的ID号每个进程都有自己的地址空间,进程之间无法访问对方的地址空间.每个进程都有自己的安全属性每个进程至少包含一个线程. 获取和释放环境信息 GetEnvironmentStrings FreeEnvironmentStrings 获取或设置 本程序的环境变量 GetEnvironmentVariable SetEnvironmentVariable 示例:char* env

windows编程中为滚动条写了按键的代码,但是按了相应的键不起作用。

问题描述 windows编程中为滚动条写了按键的代码,但是按了相应的键不起作用. 代码如下: case WM_KEYDOWN: switch (message) { case VK_HOME: SendMessage(hwnd, SB_VERT, SB_TOP, 0L); case VK_END: SendMessage(hwnd, SB_VERT, SB_BOTTOM, 0L); break; case VK_PRIOR: SendMessage(hwnd, SB_VERT, SB_PAGEU

在Linux下和Windows下遍历目录的方法及如何达成一致性操作

最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件夹的使用具有一致性,非常方便.但在C中就不一样了,而且在不同的平台下使用方法也不同.在Linux下实现该功能就非常方便,因为自带有API库,几个函数用起来得心应手(虽然有些小问题,后面说),在Windows下实现就不是那么方便,虽然也有自己的API,但用法有些晦涩难懂,因为没有封装起来,需要自己一步

浮动栏退出-windows编程 窗口全屏无边框时设置浮动栏(带有最小化按钮和退出按钮)退出全屏

问题描述 windows编程 窗口全屏无边框时设置浮动栏(带有最小化按钮和退出按钮)退出全屏 悬浮框的代码是参考freerdp实现的. 请指出错误或者提供解决代码,谢谢 //============================= #include #include "resource.h" typedef struct wf_context wfContext; typedef struct _Button Button; typedef struct _FloatBar Floa

剖析Node.js异步编程中的回调与代码设计模式_node.js

NodeJS 最大的卖点--事件机制和异步 IO,对开发者并不是透明的.开发者需要按异步方式编写代码才用得上这个卖点,而这一点也遭到了一些 NodeJS 反对者的抨击.但不管怎样,异步编程确实是 NodeJS 最大的特点,没有掌握异步编程就不能说是真正学会了 NodeJS.本章将介绍与异步编程相关的各种知识. 在代码中,异步编程的直接体现就是回调.异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了.我们首先可以看看以下代码. function heavyCompute(n, callb

线程-求救高手。。linux c编程,用进程池实现shell命令cp

问题描述 求救高手..linux c编程,用进程池实现shell命令cp 现在状态是,复制单个文件没问题,复制一个目录且目录里没有子目录也没问题. 如果目录里有一个子目录,这样貌似没有问题,但是如果有多个子目录,就会出现各种问题. 弄了一个晚上了,各种惆怅,求救各位老大帮忙看看. 本人新手,代码比较乱真的非常抱歉. //code start #include #include #include #include #include #include #include #include #inclu