


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
进程管理在Windows中是一个比较重要的内容,由于每一个正在运行的程序(包括Windows的后台程序和动态链接库)都对应有各自的进程,通过对进程的管理可以防止一些非法程序(如特洛伊木马程序)的运行,但是Windows的任务管理器(就是按ALTCTRLDEL后出现的那个东东)虽然能够中止进程,不过它的进程列表里面已经屏蔽了某些与系统有关的进程,现在有的特洛伊木马(如冰河)在编程时将自己注册为系统服务,因此通过Windows的任务管理器并不能中止它的进程;而Windows的系统信息工具msinfo32.exe虽然能够列出系统中所有的进程,但是并不能中止进程,所以也是于事无补。 为此我们可以自己编写一个进程管理软件,首先,它要能够列出系统中的所有进程,其次也要能够中止系统中任意一个进程(当然有些进程中止后将有可能导致死机)。编程思路:列出系统进程一般的方法是通过调用一组ToolHelp32函数,该组函数存在于kernel32.dll链接库中,它有许多功能,而枚举系统中的进程只是它众多功能中的一项。下面是要用到的几个关于进程的API函数:CreateToolHelpSnapshot()、ProcessFirst()、ProcessNext()。不知道是什么原因,这么重要的函数微软居然并没有将其录入到VB的API文本浏览器中,因此我们只好手工将其录入了,下面是声明: Public Declare Function CreateToolhelpSnapshot Lib kernel32 Alias CreateToolhelp32Snapshot (ByVal lFlags As Long,ByVal lProcessID As Long) As LongPublic Declare Function ProcessFirst Lib kernel32 Alias Process32First (ByVal hSnapShot As Long,uProcess As PROCESSENTRY32) As LongPublic Declare Function ProcessNext Lib kernel32 Alias Process32Next (ByVal hSnapShot As Long,uProcess As PROCESSENTRY32) As Long 此外还需要定义一个PROCESSENTRY32结构,这个结构中包含有有关系统中进程的某些信息,同样在VB中的API文本浏览器里也没有录入。Public Type PROCESSENTRY32dwSize As LongcntUsage As Longth32ProcessID As Long(上接三十三版)th32DefaultHeapID As Longth32ModuleID As LongcntThreads As Longth32ParentProcessID As LongpcPriClassBase As LongdwFlags As LongszExeFile As StringMAX_PATHEnd Type下面是列出系统进程的步骤: 1.用CreateToolHelpSnapshot()函数来创建系统中进程信息的“快照”,该函数返回一个句柄(该句柄将在下面的函数中得到应用); 2.用ProcessFirst()函数从以上“快照”中获取进程,该函数有两个参数,第一个是第一步中函数返回的句柄,第二个是指向PROCESSENTRY32结构的指针,当系统中还有其它进程时,该函数返回true;3.用ProcessNext()函数从“快照”中不断获取进程,直到它返回false为止;4.用CloseHandle()函数关闭第一步中的句柄。 关闭进程也是一个值得讨论的问题,传统的方法是用GetWindow来查找窗口句柄,再利用GetWindowText来获得窗口的标题,然后利用SendMessage函数发送WM_CLOSE消息来关闭该程序。不过这种方法有很大的缺陷:首先是有的窗口是没有标题栏的,这样的程序是无法通过该方法关闭的;其次,这种方法对动态链接库也是无法关闭的。在这里我们可以充分利用PROCESSENTRY32结构,它里面有一个th32ProcessID成员,通过TerminateProcess()函数就可以关闭进程。下面是编程的具体步骤:1.新建一工程,在窗体Form1中添加一个ListView控件,二个CommandButton; 2.按如下设置控件:Command1.Caption=查看进程;Command2.Caption=中止进程;lvw.width=54003.在“工程”中选择“添加模块”,加入上面的函数和结构声明及以下内容:Public Declare Function TerminateProcess Lib kernel32 (ByVal hProcess As Long,ByVal uExitCode As Long) As LongPublic Declare Function OpenProcess Lib kernel32 (ByVal dwDesiredAccess As Long,ByVal bInheritHandle As Long,ByVal dwProcessId As Long) As LongPublic Declare Function CloseHandle Lib kernel32 (ByVal hObject As Long) As LongPublic Const TH32CS_SNAPPROCESS=H2Public Const TH32CS_SNAPheaplist=H1Public Const TH32CS_SNAPthread=H4Public Const TH32CS_SNAPmodule=H8Public Const TH32CS_SNAPall=TH32CS_SNAPPROCESSTH32CS_SNAPheaplistTH32CS_SNAPthreadTH32CS_SNAPmodulePublic Const MAX_PATH As Integer=260 4.添加代码:Private Sub command1_Click()Dim i As LongDim proc As PROCESSENTRY32Dim snap As LongDim exename As Stringlvw.ListItems.Clear 清空所有内容snap=Create Toolhelp Snapshot(TH32CSSNAPall,0) 获得进程“快照”的句柄proc.dwSize=Len(proc)theloop=ProcessFirst(snap,proc) 获取第一个进程,并得到其返回值i=0While theloop0 当返回值非零时继续获取下一个进程exename=proc.szExeFileret=lvw.ListItems.Add(,first CStr(i),exename) 将进程名添加到第一项中lvw.ListItems(first CStr(i).SubItems(1)=proc.th32ProcessID 将进程ID添加到第二项中i=i1theloop=ProcessNext(snap,proc)WendCloseHandle snap 关闭进程“快照”句柄End SubPrivate Sub Command2_Click()Dim i As Longhand=OpenProcess(process_terminate,True,CLng(lvw.SelectedItem.SubItems(1) 获取进程句柄TerminateProcess hand,0 关闭进程Call command1_Click 调用查看进程来刷新进程列表End SubPrivate Sub Form_Load()Dim header As ColumnHeaderlvw.View = lvwReportlvw.ColumnHeaders.ClearSet header=lvw.ColumnHeaders.Add(,first,进程,4000) 设置ListView中项目的宽度,读者也可自行设置Set header=lvw.Colu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保护牙齿毕业论文
- 排水管道水力计算与流量优化方案
- 毕业论文答辩跨系
- 计算机系毕业论文和设计
- 道路运输两类人员安全员考试模拟试题及答案
- 2025年新生儿护理查房
- 2025年物体打击应急演练脚本范文
- 2025年上肢骨折护理记录范文
- 2024社区《网格员》考前冲刺卷(含答案)
- 毕业论文大数据与会计专业
- 死亡待遇申请表
- 2023年五四青年节演讲比赛PPT担负青年使命弘扬五四精神PPT课件(带内容)
- 集中供热管网系统一次网的调节方法
- 2023年义务教育音乐2022版新课程标准考试测试题及答案
- 无线充电技术在汽车上的应用
- 马工程《刑法学(下册)》教学课件 第17章 危害国家安全罪
- 11科室临床路径、单病种管理目录
- 2023年资产评估师《资产评估基础》题库附参考答案(基础题)
- 铁路职工政治理论应知应会题库
- 综合性文稿写作名师优质课赛课一等奖市公开课获奖课件
- 种子全程质量管理制度
评论
0/150
提交评论