在VB.NET中,我們可以輕易的獲取系統(tǒng)中正在運行的進(jìn)程的名字稠项,路徑等數(shù)據(jù)涯雅。而不需要像VB6中一樣使用一大堆的API函數(shù)。
下面是我某個程序中的一段代碼展运,用來將進(jìn)程名顯示在一個列表框中
Sub UpdateCurrentTask() 'ok at 13-08-12 負(fù)責(zé)在獨立線程實時更新正在運行的線程的變化【完成】
'負(fù)責(zé)更新顯示的進(jìn)程
Dim kProcess() As System.Diagnostics.Process
Dim kProc As System.Diagnostics.Process
Dim TaskList As New List(Of String)
Dim BoxList As New List(Of String)
While (True)
kProcess = System.Diagnostics.Process.GetProcesses()
TaskList.Clear()
BoxList.Clear()
For Each kProc In kProcess'將進(jìn)程名保存如列表
TaskList.Add(kProc.ProcessName)
Next
For j As Integer = 0 To Running.Items.Count - 1
'將列表中的項目保存
BoxList.Add(Running.Items.Item(j))
Next'開始比對列表中現(xiàn)存的活逆,如果列表中的項不存在于進(jìn)程中,則會被剔除
For ji As Integer = BoxList.Count - 1 To 0 Step -1
Dim i As String = BoxList.Item(ji)
If TaskList.Contains(i) = True Then
Else
Invoke(New vRemoveRunning(AddressOf RemoveRunning), i)
BoxList.Remove(i)
End If
Next
'開始比較進(jìn)程與列表拗胜,列表中不存在的進(jìn)程中的項蔗候,將被加入
For ji As Integer = TaskList.Count - 1 To 0 Step -1
Dim i As String = TaskList.Item(ji)
If BoxList.Contains(i) = True Then
Else
BoxList.Add(i)
Invoke(New vAddRunning(AddressOf AddRunning), i)
End If
Next
Threading.Thread.Sleep(500)
End While
End Sub
一個簡單的例子:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim kProcess() As System.Diagnostics.Process
Dim kProc As System.Diagnostics.Process
kProcess = System.Diagnostics.Process.GetProcesses()
For Each kProc In kProcess
Try
Debug.Print("進(jìn)程名:" & kProc.ProcessName)
Debug.Print("映像路徑:" & kProc.MainModule.FileName)
For Each pro As Diagnostics.ProcessModule In km
Debug.Print("Module Path:" & pro.FileName)
Next
Debug.Print("…………………………………………………………")
Catch ex As Exception
End Try
Next
End Sub