我初学编程,接触vc也没有多长的时间,本文就尝试着来编写一个进程查看器,这样当病毒屏蔽了系统的任务管理器后,我们的工具就可以起到一定的作用了。
首先打开VC++,我推荐大家使用VC++(包含在Visual studio中),因为VC++的库是经过微软精心优化的,这样我们编写的程序会更加稳定。废话不多说了,先建立一个MFC应用程序工程,我取名叫做了ListControl,再来设计一下程序的主界面,使用到了两个Button控件和一个List列表控件,然后我又更改了一下按钮控件的显示名称。
程序主界面设计好了,接下来就可以编写代码了,先给我们添加的List控件绑定一个变量,将它和控件的ID绑定在一起。为什么要绑定变量呢?原因很简单,因为我们添加的List控件是一个资源,它的ID(这里它的ID就是IDC_LIST3,我们可以在制作好的主界面上右键点击这个控件进行查看)在vc中被定义成了一个宏,我们可以在resources.h文件中查看到它的定义。由此,我们知道了它的ID其实是一个整数,所以我们在后文调用它的成员函数时是没有办法对一个整数使用“.”(成员运算符)的。
好了,现在我们给它绑定一个变量,在vc的工具栏上选择“查看”——“建立类向导”,然后在弹出的对话框中打开“Member Variables”选项,点击右边的“AddVariable”,就弹出了一个窗口,在“Member variable name”栏中输入要添加的变量名(我添加的变量名为m_ListCrtl),点击“OK”就行了。
为什么要这样命名呢?其实这是根据匈牙利命名法来命名的,这也是微软的一个工程师提出来的方法,限于篇幅,关于这种方法的具体介绍,大家有兴趣的话可以到网上查阅一下。变量名添加好了,接下来就是编写代码了,先做一些初始化的工作了,我们在file view选项中选择ListControlDlg.cpp文件,双击它,这样就进入了代码编辑工作区。
VC已经为我们添加了许多代码,这些我们都不用管,直接从中找到代码,这个函数就是程序开始时做的初始化工作。我们在函数的末尾添加以下的代码:
我来简单的解释一下,SetExtendedStyleO函数是CList类的一个成员函数,它是用来设置我们添加的List控件的风格的,这里我们传递的参数就是整行选中和网状形式。具体的什么是整行选中和网状形式,大家先不用急着去弄明白,等我们制作好了就可以看到了。下面两句就是添加两列,并分别命名为“进程名”和“PID”,需要注意的是,要想使我们添加的这三行代码生效,还要将List控件属性里的“样式”——“查看”调成报告形式。
初始化代码我们就添加好了,接下来就是程序的关键代码了。我们调出刚才制作好的程序主界面,然后双击“查看进程”按钮,就进入到了这个按钮控件的消息响应函数中,加入以下的代码:
为了方便代码的理解,我都添加了注释,基本思路就是建立一个进程快照,然后将信息写入控件列表,再查找下一个进程,直到找完为止。别忘了“#include<tlhelp32.h>”,因为CreateToolhelp32SnapshotO和下面的几个进程相关的函数是定义在这个头文件中的。其中PROCESSENTRY32是一个结构体,这个大家可以查阅MSDN来更好的理解它。同样的,在“统计进程数”消息响应函数中加入以下的代码:
最后来编译程序,顺利的通过了,至此我们的进程查看器就编写好了,来运行一下看看效果。
这个程序的功能非常简单,不过却很实用,其实我们还可以添加右键菜单来实现结束进程(用到的函数就是TerminateProcessO)等功能,关于添加这些功能去完善这个小程序,就交给大家去完成吧!