首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Dotnet频道
中国IT教育
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> VB.NET >> 文章正文

VB.Net实现进程监视器的方法

文章来源中国IT实验室收集整理 作者佚名 更新时间2008-1-2 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

  1)可以查看进程的各项基本信息,如cpu,内存,父进程,执行路径,创建者等

  2)可以中止进程,创建新进程

  3)可以配置目标进程,配置刷新速度

  最终效果图:

  (以下给出部分代码,其余像进程的创建、中止等,使用process类将很容易实现)

  1)使用wmi获取父进程id,进程创建者

  (注意,使用wmi获得的内容,不宜循环刷新,这样代价比较大)

  添加命名空间:

  Imports System.Management

  Public Class HandleObjectReady

  Private complete As Boolean = false

  Private obj As ManagementBaseObject

  Public ReadOnly Property Complete As Boolean

  Get

  Return complete

  End Get

  End Property

  Public ReadOnly Property Obj As ManagementBaseObject

  Get

  Return obj

  End Get

  End Property

  Public Sub Done(ByVal sender As Object, ByVal e As ObjectReadyEventArgs)

  complete = true

  obj = e.NewObject

  End Sub

  End Class

  Private Sub FillDetailUseWmi(ByVal pID As Integer)

  Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(("Select * From Win32_Process Where ProcessID=" + pID))

  Dim moc As ManagementObjectCollection = searcher.Get

  Dim observer As ManagementOperationObserver = New ManagementOperationObserver

  Dim hor As HandleObjectReady = New HandleObjectReady

  AddHandler observer.ObjectReady, AddressOf hor.Done

  For Each mo As ManagementObject In moc

  mo.InvokeMethod(observer, "GetOwner", Nothing)

  While Not hor.Complete

  System.Threading.Thread.Sleep(500)

  End While

  Dim user As String = ""

  (hor.Obj("returnValue")。ToString = "0")

  user = hor.Obj.Properties("User")。Value.ToString

  If Not Me.mDict.ContainsKey(pID) Then  Return

  End If

  If ((Not (mo("ParentProcessID")) Is Nothing)  _

  AndAlso Me.mDict.ContainsKey(Convert.ToInt32(mo("ParentProcessID")))) Then

  Me.mDict(pID)。ParentProce = Me.mDict(Convert.ToInt32(mo("ParentProcessID")))。ProceName

  End If

  Me.mDict(pID)。Creator = user

  If (Not (Me.HandleDetailList) Is Nothing) Then

  Me.HandleDetailList(Me.mDict(pID))

  End If

  Next

  searcher.Dispose

  searcher = Nothing

  moc.Dispose

  moc = Nothing

  observer = Nothing

  hor = Nothing

  End Sub

[1] [2] 下一页  

【责编:John】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 社区讨论
 博客论点
 Dotnet频道相关导航