Windows系统下进程枚举问题研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows系统下进程枚举问题研究

Windows系统下进程枚举问题研究   [摘要]讨论使用Windows工具库API函数CreateToolhelp32Snapshot对系统进程进行枚举的基本方法。以VC++6.0为开发平台实现了一个进程查看和结束程序。   [关键词]进程 枚举 VC++ MFC   中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0920055-01      一、进程枚举就一些基本概念      (一)进程   进程就是应用程序的运行实例,是应用程序的一次动态执行。   (二)进程枚举   进程枚举就是通过一定的方法获得当前系统运行的所有进程的ID,进而根据进程ID获得和进程相关的其他信息,比如进程的CPU和内存占用率、进程加载的DLL模块、进程所创建的线程数和进程所对应的映像名称等等。      二、使用工具库API函数进行进程枚举      使用工具库API函数进行进程枚举是一种最常用的进程枚举方法。它主要用到以下几个API函数:CreateToolhelp32Snapshot、Process32First、   Process32Next。   (一)主要相关API函数   API函数CreateToolhelp32Snapshot的功能就是给系统拍快照。它的原型如下:HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID),其中参数dwFlags指定了快照中包合的内容。它的值常选为TH32CS_SNAPHEAPLIST、TH32CS_SNAPMODULE、TH32CS_SNAPPROCES   S、TH32CS_SNAPTHREAD中的一个,这四个值的含意分别为给指定进程的堆、指定进程的模块(通常为DLL)、和当前进程、指定进程的线程拍快照。参数th32ProcessID为进程ID。   Process32First和Process32Next的原型分别为BOOL WINAPI Process   32First(HANDLEhSnapshot,LPROCESSENTRY32lpte)和BOOL WINAPI Process32Next( HANDLE hSnapshot, LPROCESSENTRY32 lpte)。这两个API函数的作用分别获得当前进程快照中的第一个和下一个进程。参数hSnapshot为调用CreateToolhelp32Snapshot函数时返回的句柄,参数lpte是结构体PROCESSENTRY32的指针变量。结构体PROCESSENTRY32是用来接收函数Process32First和Process32Next所枚举到的进程的一些信息的。   (二)进程关闭   关闭进程先对系统当前运行的进程进行枚举,根据一定的选择条件在函数Process32Next的参数中的结构体PROCESSENTRY32的变量的元素th32ProcessID获得要关闭的进程的ID号。再调用函数OpenProcess(PROCES   S_TERMINATE,TRUE,m_pIdSelected),该函数返回指定进程ID的进程的句柄。再将得到的进程句柄传递给函数TerminateProcess,关闭指定的进程。      三、枚举和关闭进程程序示例      下面实现一个基于MFC对话框的枚举和关闭进程的应用程序:   创建工程,首先在主对话框模板中加入一个ID为IDC_LIST1列表视控件并设置它为报告样式。再增加两个分别为刷新和结束进程的按钮,它们的ID分别为:IDC_FRESH和IDC_TERMINATE。   为列表框控件绑定一个成员CListCtrl类现的成员变量m_processCtrl。在对话框中的初始化函数OnInitDialog中加入如下代码,为列表视控件加入表头:   m_processCtrl.InsertColumn(0,进程ID,LVCFMT_LEFT,50);//为列表视加入标题   m_processCtrl.InsertColumn(1,进程名,LVCFMT_LEFT,100);   m_processCtrl.InsertColumn(2,线程数,LVCFMT_LEFT,50);   再增加对当前进程进行枚举的代码,核心代码如下:   HANDLE hSnapShot   =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);   PROCESSENTRY32* processInfo=new PROCESSENTRY32;   processInfo-dwSiz

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档