Public Class Form1 Inherits System.Windows.Forms.Form Public zj Public myProcesses() As Process Public myProcess As Process Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() myProcesses = Process.GetProcesses() For Each myProcess In myProcesses ListBox1.Items.Add(myProcess.ProcessName) Next Label1.Text = "" Label1.Text = "本機共有" & ListBox1.Items.Count & "個進程在運行" End Sub Private Sub ListBox1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick Dim i : Dim f As Integer : Dim h As Integer ListBox2.Items.Clear() zj = ListBox1.SelectedIndex Label2.Text = "進程" & ListBox1.Items.Item(zj) & "的相關信息" With ListBox2.Items If myProcesses(zj).MainWindowTitle = "" Then .Add("無相關主窗口") Else .Add(myProcesses(zj).MainWindowTitle) End If .Add(myProcesses(zj).BasePriority & "進程的基本優先級") .Add(myProcesses(zj).Handle.ToString & "進程的本機句柄") .Add(myProcesses(zj).HandleCount & "進程打開的句柄數") .Add(myProcesses(zj).Id & "進程的唯一標識符") .Add(myProcesses(zj).MachineName & "進程正在其上運行的計算機的名稱") .Add(myProcesses(zj).MainModule.ToString & "進程的主模塊") .Add(myProcesses(zj).MainWindowHandle.ToString & "進程主窗口的句柄") .Add(myProcesses(zj).Modules & "") .Add(myProcesses(zj).NonpagedSystemMemorySize & "分配給此進程的未分頁的系統內存大小") .Add(myProcesses(zj).PagedMemorySize & "分頁的內存大小") .Add(myProcesses(zj).PagedSystemMemorySize & "分頁的系統內存大小") .Add(myProcesses(zj).PeakPagedMemorySize & "峰值分頁內存大小") .Add(myProcesses(zj).PeakVirtualMemorySize & "峰值虛擬內存大小") .Add(myProcesses(zj).PrivateMemorySize & "專用內存大小") .Add(myProcesses(zj).StartTime & "進程啟動的時間") .Add(myProcesses(zj).TotalProcessorTime.Seconds & "進程的總的處理器時間") .Add(myProcesses(zj).UserProcessorTime.Seconds & "進程的用戶處理器時間") .Add(myProcesses(zj).VirtualMemorySize & "進程的虛擬內存大小") End With ListBox3.Items.Clear() TabPage1.Text = "進程" & ListBox1.Items.Item(zj) & "的基本信息" TabPage2.Text = "進程" & ListBox1.Items.Item(zj) & "相關的線程信息" TabPage3.Text = "進程" & ListBox1.Items.Item(zj) & "相關的模塊信息" ///////////////////////////////////////////// f = myProcesses(zj).Threads.Count Label4.Text = "進程" & ListBox1.Items.Item(zj) & "共有" & f & "個相關的線程,線程ID信息如下:" Dim int, pk, m, n For n = 0 To f - 1 ListBox3.Items.Add(myProcesses(zj).Threads(n).Id) Next /////////////////////////////////////// ListBox5.Items.Clear() Dim zha, kl zha = myProcesses(zj).Modules.Count Label5.Text = "與進程" & ListBox1.Items.Item(zj) & "共有" & zha & "個相關的模塊,模塊位置信息如下:" For kl = 0 To zha - 1 ListBox5.Items.Add(myProcesses(zj).Modules(kl).FileName) Next End Sub Private Sub ListBox3_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox3.DoubleClick ListBox4.Items.Clear() Dim f, n f = myProcesses(zj).Threads.Count n = ListBox3.SelectedIndex Label6.Text = "線程" & ListBox3.Items.Item(n) & "相關信息" With ListBox4.Items‘與進程相關的線程信息見System.Diagnostics.processThread類。因為Processes.threads屬性是返回thread對象數組而thread對象數組的實例是由ProcessThread類來創建,thread對象數組的信息是包含在System.Diagnostics. ProcessThread類中。 .Add(myProcesses(zj).Threads(n).BasePriority) .Add(myProcesses(zj).Threads(n).CurrentPriority) .Add(myProcesses(zj).Threads(n).PriorityLevel) .Add(myProcesses(zj).Threads(n).PrivilegedProcessorTime) .Add(myProcesses(zj).Threads(n).StartTime) .Add(myProcesses(zj).Threads(n).ThreadState.ToString) .Add(myProcesses(zj).Threads(n).TotalProcessorTime.Seconds) .Add(myProcesses(zj).Threads(n).UserProcessorTime.Seconds) .Add(myProcesses(zj).Threads(n).WaitReason.ToString) End With End Sub Private Sub ListBox5_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox5.DoubleClick ListBox6.Items.Clear() Dim f, n, m f = myProcesses(zj).Modules.Count n = ListBox5.SelectedIndex Label7.Text = "模塊" & ListBox5.Items.Item(n) & "相關信息" With ListBox6.Items‘與進程相關的模塊信息見System.Diagnostics. ProcessModule類,因為Processes.Modules屬性是返回Modules對象數組而Modules對象數組的實例是由ProcessModule類來創建,Modules對象數組的信息是包含在System.Diagnostics. ProcessModule類中。 m = Hex(myProcesses(zj).Modules(n).BaseAddress.ToInt32)‘轉換成16進制 .Add(m) m = Hex(myProcesses(zj).Modules(n).EntryPointAddress.ToInt32) .Add(m) .Add(myProcesses(zj).Modules(n).FileVersionInfo) .Add(myProcesses(zj).Modules(n).ModuleMemorySize) .Add(myProcesses(zj).Modules(n).ModuleName) End With End Sub |