多功能驱动工具框架之R3层进程遍历(6-1).docx

多功能驱动工具框架之R3层进程遍历(6-1).docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第PAGEII页

多功能驱动工具框架之R3层进程遍历(6-1)

目录

TOC\o1-3\h\z\u2512工具准备与测试流程 2

121331.1准备工作 2

51761.2代码编写 2

工具

VS2022

作者

?

时间

2024-04-29

平台

Windows10

第PAGE18页

工具准备与测试流程

1.1准备工作

上一节简单的分析功能点,这节开始实现进程遍历的功能实现。需要准备的在工具箱中的Statictext控件,这个控件分别对应选择进程和提示信息,提示信息这里需要准备三个Statictext控件,一个为选择进程,一个为提示信息:还有一个是动态显示进程功能更,还有下拉框,下拉框为Combobox

1.2代码编写

接着我们右键创建一个类,命名为ProcessTraversal,会自动生成.cpp和.h头文件,然后实现以下的函数功能。先定义一个pe32结构体,PROCESSENTRY32pe32;然后对结构体中的dwsize成员,进行初始化,接着调用CreateToolhelp32Snapshot函数,这个函数传入的两个参数,第一个参数为TH32CS_SNAPPROCESS,后一个参数填0即可,该函数实现的功能为创建进程的快照,用HANDLESnapshot去接返回值,然后对这个句柄进行判断如果值为-1那么说明句柄失效,否则开始遍历第一个进程,用Process32First进行进程的遍历,第一个参数为CreateToolhelp32Snapshot函数返回的句柄,后一个参数为结构体指针,刚才我们已经定义pe32结构体,直接传入即可

下一步我们来看中间的代码部分,_tcsicmp(pe32.szExeFile,_T(smss.exe),这个地方的含义为字符串对比,也就是我们在遍历进程的时候过滤掉我们不需要的进程,在pe32结构体中,szExeFile表示的是文件名,tcsicmp则是两个字符串进行比较,如图的写法则表示为会将名为smss.exe进行过滤~不会显示在下拉列表框中

List.Format(_T(%s(PID:%u)),pe32.szExeFile,pe32.th32ProcessID);//通过format进行拼接输出进程名与pid的值,也就是如图的一个显示效果,pe32.th32ProcessID表示为该结构体中的进程pid值

pdlg-Box1.AddString(List);,接下来这句代码就表示将遍历出来的进程添加到列表框中,这个Box1是我们前面添加的ComboBox1,也就是下拉列表框的名称,但是这个地方需要注意,我们是跨类去调用Box,所以还需要添加几句代码,才能实现不同类调用成员,在DriverFrameDlg.h中补充staticCDriverFrameDlg*Test;

在ProcessTraversal.cpp中添加一个全局的ProcessTraversal*ProcessTraversal::Test1=NULL;

在这个位置定义一个pdlg的指针

在DriverFrameDlg.cpp中继续补充这两句代码

在ProcessTraversal.h头文件中定义一个test指针,声明我们的遍历进程函数voidProcessID();

下一步我们就可以通过pdlg,将内容添加到列表框中,pdlg-Box1.AddString(List);这个地方前面定义了一个CString字符串类型,那么说明保存的类型为CString,然后接着while循环,用到Process32Next遍历下一个进程,同样还是传入句柄和结构体指针,遍历结束,关闭句柄CloseHandle

这样我们就实现了遍历进程并添加到下拉框的功能,通过pdlg1去调用ProcessID()函数,注意这个位置应该写在OnInitDialog()中

写完之后运行测试,发现进程成功添加到下拉框中

接下来,对刷新进程功能进行实现,第一步先将下拉列表框的内容进行清空,然后用这句代码将空进程显示到提示信息中,GetDlgItem(IDC_STATIC4)-SetWindowTextW(L空进程!);每当点击刷新进程提示框就会显示空进程然后我们重新调用ProcessID()这个函数,GetDlgItem检索指定对话框中控件的句柄。我们填入StaticText的ID,然后SetWindowTextW更改文本内容,最终实现刷新进程的效果,实际上也就是重新调用遍历进程的函数

下一节我们分析如何返回当前选中进程并将pid值传出!

文档评论(0)

133****0876 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档