探索黑客技术攻防,实战研究与安全创新

导航菜单

VC9完善进程管理器

我上次给大家带来了一个自己编写的进程查看器,但是由于时间比较仓促,有一些功能还没来得及实现。上次是在VC++6.0的环境下编写的,这次我就把它移植到了VC++9.0(包含在Visual studio中)中。既然是进程管理嚣,那么基本的功能还是要做好的,下面我们就一起来实现这些功能吧。

大家来看一下,跟上次的程序相比,我添加了文件目录打开、结束进程以及文件路径显示的功能。

工程的具体内容大家请参考第三期杂志中的那篇文章,我的工程名为进程查看,工程建好之后,在DLG类中添加一个成员函数ShowList(),用来实现软件的初始化工作,废话不多说了,直接给出代码,BOOL C进程查看Dlg;;ShowList():



我大致的解释一下新加代码的作用,GetModuleFileNameEx()这个函数是获取文件路径并保存在FilePath变量中,然后将其显示在列表中。这是一个API,而不是MFC类库里面封装的函数,大家可以查阅一下MSDN来了解相关参数以及参数的含义。为什么要自己封装这个函数呢?这主要是为了菜单中刷新功能的实现。

QQ截图20170313144002.png

我们这次的重点是怎样添加菜单和显示菜单,以及菜单中每一项功能的实现。在vc中切换到资源选项,单击右键选择新建菜单,然后来添加菜单选项,这里需要注意的是,菜单中的第一项是没有作用的,因为我们器加的是弹出式菜单,所以第一项是可以随便填写的,这里我填写的就是Menu。

菜单添加好之后就是要实现当右键点击我们的listCtrl控件时弹出菜单的功能了,当然这就需要为listctrl添加右键单击事件响应函数了,限于篇幅有限,我就不再重复如何添加了。函数的主体代码如下:




我来解释一下为什么要获得子菜单的指针,其原因就是我们添加的是弹出式菜单,这里弹出的就是我们刚才随便命名的Menu的子菜单。TrackPopupMenu()函数就是我们弹出菜单的函数了,我们之前的所有操作都是为它准备的,这个函数以后会经常使用到,大家最好把它弄清楚。

好了,弹出菜单的功能已经实现,再接下来就是菜单中每项功能的实现了,分别为每一项添加单击事件消息响应函数,添加的时候函数名自己可以随便更改,我就直接给出代码了,文件目录的代码如下:


我们先获取listctrl中显示的文件路径,然后去掉文件名,得到文件路径,再使用ShellExecute()函数打开目录,这个方法我仿照了瑞星的文件定位功能,但是不知道怎样打开目录后自动选中该文件,还请高手们能够指点一下。结束进程的。


这里就用到了给大家提示的函数Term1nateProcess(),但是如果我们直接使用这个函数的话,可能会无法结束掉指定进程,所以在结束进程前必须要让我们的程序有结束其它进程的权限,这里就用到了一个自定义函数BOOL EnablePrivilege():


这个函数基本上是比较固定的,使用的时候只要更改一下权限模式就行了。我们在初始化窗口的过程中调用这个函数,就实现了权限的提升。最后就是刷新的处理函数,简单的调用一下ShowList()就可以了。

好了,我们真正意义上的进程管理工具就编写成功了,以后当碰上屏蔽任务管理器的病毒时,这个工具就可以发威了。