一.本文程序设计、调试和运行的环境:
(1).微软公司视窗2000服务器版。
(2).Visual Studio .Net正式版,.Net FrameWork SDK版本号3705。
二.简介Visual Basic .Net实现Windows进程管理器时的主要类库:
在用Visual Basic .Net实现Windows进程管理器中最重要,也是最频繁的就是Process类。Process类位于命名空间System.Diagnostics中,使用者可以提供使用它来操控计算机进程,如启动、停止、控制进程等。和得到与进程相关的属性,如线程集、加载的模块(即加载的DLL文件和EXE文件)和各种性能信息(如进程当前使用的内存量)等。其实读者只需对下面介绍的程序进行一定的修改,所实现的功能就大大强于Windows的进程管理器功能,但前提是掌握以下表01和表02中所列出的Process的常用属性、常用方法及其说明。
属性说明BasePriority获取关联进程的基本优先级。EnableRaisingEvents获取或设置在进程终止时是否应激发Exited事件。ExitCode获取关联进程终止时指定的值。ExitTime获取关联进程退出的时间。Handle返回关联进程的本机句柄。HandleCount获取由进程打开的句柄数。HasExited获取指示关联进程是否已终止的值。Id 获取关联进程的唯一标识符。MachineName获取关联进程正在其上运行的计算机的名称。MainModule获取关联进程的主模块。MainWindowHandle获取关联进程主窗口的窗口句柄。MainWindowTitle获取进程的主窗口标题。MaxWorkingSet获取或设置关联进程的允许的最大工作集大小。MinWorkingSet获取或设置关联进程的允许的最小工作集大小。Modules获取已由关联进程加载的模块。NonpagedSystemMemorySize获取分配给此进程的未分页的系统内存大小。PagedMemorySize获取分页的内存大小。PagedSystemMemorySize获取分页的系统内存大小。PeakPagedMemorySize获取峰值分页内存大小。PeakVirtualMemorySize获取峰值虚拟内存大小。PeakWorkingSet获取峰值工作集大小。PriorityBoostEnabled获取或设置一个值,该值指示主窗口拥有焦点时是否由操作系统暂时提升关联进程的优先级。PriorityClass获取或设置关联进程的总体优先级类别。PrivateMemorySize获取专用内存大小。PrivilegedProcessorTime获取此进程的特权处理器时间。ProcessName获取该进程的名称。StartTime获取关联进程启动的时间。Threads获取在关联进程中运行的一组线程。TotalProcessorTime获取此进程的总的处理器时间。UserProcessorTime获取此进程的用户处理器时间。VirtualMemorySize获取进程的虚拟内存大小。WorkingSet获取关联进程的物理内存使用情况。
表01:Process类常用属性及其说明
可见Process类提供了很多获取计算机进程相关信息的属性,在下面介绍的用Visual Basic .Net实现Windows进程管理器中,只需要使用Process中的ProcessName、Id、StartTime和PrivateMemorySize区区四个属性。同样Process提供了许多用以操控进程的方法,在下面介绍的程序中,调用了GetProcessById、Kill、Close、GetProcesses等方法来获取计算机进程数据和操控进程状态。Process类中的其他常用方法及其说明见下表所示:
方法说明Close 释放与此组件关联的所有资源。CloseMainWindow 通过向进程的主窗口发送关闭消息来关闭拥有用户界面的进程。CreateObjRef创建一个对象,该对象包含生成用于与远程对象进行通讯的代理所需的全部相关信息。EnterDebugMode将Process实例置于与以特殊模式运行的操作系统进程进行交互的状态。GetCurrentProcess 获取新的Process实例并将其与当前活动的进程关联。GetLifetimeService检索控制此实例的生存期策略的当前生存期服务对象。GetProcessById创建新的Process实例,并将其与您指定的现有进程资源关联。GetProcesses创建新的Process实例的数组,并将它们与现有进程资源关联。GetProcessesByName创建新的Process实例的数组,并将它们与共享指定的进程名称的所有现有进程资源关联。InitializeLifetimeService获取控制此实例的生存期策略的生存期服务对象。Kill立即停止关联的进程。LeaveDebugMode使Process实例离开允许它与以特殊模式运行的操作系统进程交互的状态。Refresh 放弃有关关联进程的、已缓存到该进程组件内的任何信息。Start启动进程资源并将其与Process实例关联。WaitForExit设置等待关联进程退出的时间,并在该段时间结束前或该进程退出前,阻止当前线程执行。WaitForInputIdle使Process实例等待关联进程进入空闲状态。
表02:Process类常用方法及其说明