【转】遍历Taskmanager中所有的进程是否已经启动需要的exe

CreateToolhelp32Snapshot

CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。

  HANDLE WINAPI CreateToolhelp32Snapshot(

  DWORD dwFlags, //用来指定“快照”中需要返回的对象,可以是TH32CS_SNAPPROCESS等

  DWORD th32ProcessID //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取当前进程快照时可以设为0

  );

  参数:

  dwFlags

  [输入]指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。

  TH32CS_INHERIT - 声明快照句柄是可继承的。

  TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。

  TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。

  TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。

  TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。

  TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。

  Const TH32CS_SNAPHEAPLIST = &H1

  Const TH32CS_SNAPPROCESS = &H2

  Const TH32CS_SNAPTHREAD = &H4

  Const TH32CS_SNAPMODULE = &H8

  Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)

  Const TH32CS_INHERIT = &H80000000

  th32ProcessID

  [输入]指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

  返回值:

  调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。

  备注:

  使用GetLastError函数查找该函数产生的错误状态码。

  注意,在Win NT中,要删除快照,使用CloseHandle函数;在Win CE中,要删除快照,使用CloseToolhelp32Snapshot函数。

C++例子:

  #include "StdAfx.h"

  #include "windows.h"

  #include "tlhelp32.h"

  #include "stdio.h"

  int main(int argc, char* argv[])

  {

  PROCESSENTRY32 pe32;

  //在使用这个结构前,先设置它的大小

  pe32.dwSize = sizeof(pe32);

  //给系统内所有的进程拍个快照

  HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

  if (hProcessSnap == INVALID_HANDLE_VALUE)

  {

  printf("CreateToolhelp32Snapshot 调用失败.\n");

  return -1;

  }

  //遍历进程快照,轮流显示每个进程的信息

  BOOL bMore = ::Process32First(hProcessSnap,&pe32);

  while (bMore)

  {

  printf("进程名称:%s\n",pe32.szExeFile);

  printf("进程ID:%u\n\n",pe32.th32ProcessID);

  bMore = ::Process32Next(hProcessSnap,&pe32);

  }

  //不要忘记清除掉snapshot对象

  ::CloseHandle(hProcessSnap);

  return 0;

  }

最后注:该函数在头文件 tlhelp32.h 中声明,因此需要添加头文件信息。

时间: 2024-10-01 06:42:03

【转】遍历Taskmanager中所有的进程是否已经启动需要的exe的相关文章

Android中AIDL实现进程通信(附源码下载)

AIDL概述 之前的博客<Android中通过Messenger与Service实现进程间双向通信>演示了如何通过Messenger实现与Service进行跨进程通信,即IPC.但用Messenger实现的IPC存在一点不足:Service内部维护着一个Messenger,Messenger内部又维护着一个Hanlder,当多个client向该Service发送Message时,这些Message需要依次进入Hanlder的消息队列中,Hanlder只能处理完一个Message之后,再从消息队

遍历PspCidTable表检测隐藏进程

一.PspCidTable概述 PspCidTable也是一个句柄表,其格式与普通的句柄表是完全一样的,但它与每个进程私有的句柄表有以下不同: 1.PspCidTable中存放的对象是系统中所有的进程线程对象,其索引就是PID和TID. 2.PspCidTable中存放的直接是对象体(EPROCESS和ETHREAD),而每个进程私有的句柄表则存放的是对象头(OBJECT_HEADER). 3.PspCidTable是一个独立的句柄表,而每个进程私有的句柄表以一个双链连接起来.注意访问对象时要掩

DOM应用---遍历网页中的元素

在我们编写的程序中,如果想要实现对浏览器打开的网页进行监视.模拟操纵.动态提取用户输入.动态修改......等功能,那么请你抽出宝贵的时间,继续往下阅读.本文介绍的知识和示例程序都是围绕如何遍历 HTML 中的表单(form)并枚举出表单域的属性为目标的,对于网页中的其它元素,比如图象.连接.脚本等等,应用同样的方法都可以轻松实现. 二.网页的文档层次结构 IE 浏览器,采用 DOM(文档对象模型)来管理网页的数据.它通过一个容器(IWebBrowser2/IHTMLWindow2)来装载网页文

算法学习 - 表达树的建立(后缀表达式法),树的先序遍历,中序遍历,后序遍历

表达树就是根据后缀表达式来建立一个二叉树. 这个二叉树的每个叶子节点就是数,真祖先都是操作符. 通过栈来建立的,所以这里也会有很多栈的操作. 树的先序遍历,中序遍历,后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码. 下面是代码: // // main.cpp // expressionTree // // Created by Alps on 14-7-29. // Copyright (c) 2014年 chen. All rights reserved. // #includ

实现同一个脚本多次运行,系统中只有一个进程

编写脚本,实现同一个脚本多次运行,系统中只有一个进程 [email protected] scripts]#cat pid.sh #!/bin/sh pidpath=/tmp/a.pid if [ -f "$pidpath" ]   then     kill `cat $pidpath` >/dev/null 2>&1     rm -f $pidpath fi echo $$ >$pidpath sleep 300 测试如下 [email protecte

Linux中的僵尸进程和孤儿进程

在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程.        操作系统内核以进程标识符(Process Identifier,即PID)来识别进程.进程0是系统引导时创建的一个特殊进程,在其调用fork创建出一个子进程(即PID=1的进程1,又称init)

linux中的守护进程

//一.守护进程 守护进程,也叫精灵进程(daemon) 它和普通后台进程的区别在于以下三点 1.守护进程自成会话,而普通后台进程则不一定 2.守护进程不受终端的控制 3.守护进程就是后台进程,而后台进程不同于守护进程 用ps axj命令查看系统中的进程,TPGID一栏为 -1 的进程(这些进程没有控制终端)就是守护进程. //二.实现 创建守护进程的步骤如下: 1.调用umask把[文件模式创建屏蔽字] 设置为 0 由于 umask 接收的参数会被取反,所以这个 0 传进去取反以后是最大的,也

根据二叉树的前序遍历和中序遍历重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(

jQuery遍历table中的tr td并获取td中的值

jQuery遍历table中的tr td并获取td中的值 $(function(){ $("#tableId tr").find("td").each(function(){ <span style="white-space:pre"> </span> var year = $("#year").val(); var month = $("#month").val(); var da