成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用實例講述VB.NET Process類

開發 后端
這里介紹VB.NET Process類,使用VB.NET Process類,可以獲取當前運行的進程的列表,或者啟動新的進程。VB.NET Process類用于訪問系統進程。初始化VB.NET Process類后,可使用該類來獲取有關當前運行的進程的信息。

在向大家詳細介紹VB.NET Process類之前,首先讓大家了解下ptm是什么,然后全面介紹VB.NET Process類。首先對文章名做一個解示,p是代表Process,即進程,t是代表Thread,即線程,m是代表Module,即模塊。

在 win nt,win 2000,win xp中都有一個性能查看器,我們可以用它來查看計算機上正在運行的程序,獲得與程序相關的主窗口名,和查看cpu和內存,虛擬頁面的使用情況。但是對于更高要求的計算機使用人員來說,這些是不夠的,特別是一些diy的發燒友,他們希望自己可以隨時對自己的計算機進行查看,了解更多的信息從而可以知道自己的計算機是否應該升級了,是否該對虛擬頁面做出調整,是否該換cpu,還是增加內存。

由于以上情況,所以我們完全有理由做一個更好的查看器。在進行編寫代碼以前我們還需要知道一些基本知識,即proccess,thread,module。現在我們先來學習一下proecss的基本知識。

VB.NET Process類的概念

用最簡短的話來說,進程就是當前運行的應用程序。運行的應用程序包括exe,dll這兩種文件。文件和進程的差別在與,文件是保存在磁盤上的,是靜止的,計算機不會去調用文件,而進程是非靜止的,正是由于著個原因,所以計算機每調用一個進程就需要一定的資源。這些資源包括內存,虛擬頁面,句柄,gdi……

在.net中我門可以用VB.NET Process類,(他位于System.Diagnostics空間中)提供對正在計算機上運行的進程的訪問。使用VB.NET Process類,可以獲取當前運行的進程的列表,或者啟動新的進程。VB.NET Process類用于訪問系統進程。初始化VB.NET Process類后,可使用該類來獲取有關當前運行的進程的信息。此類信息包括線程集、加載的模塊(.dll 和 .exe 文件)和性能信息(如進程當前使用的內存量)。

系統進程在系統上由其進程標識符唯一標識。與許多 Windows 資源一樣,進程也由其句柄標識,而句柄在計算機上可能不唯一。句柄是表示資源標識符的一般術語。即使進程已退出,操作系統仍保持進程句柄,該句柄通過 Process 組件的 Handle 屬性訪問。因此,可以獲取進程的管理信息,如 ExitCode(通常,或者為零表示成功,或者為非零錯誤代碼)和 ExitTime。句柄是非常有價值的資源。

  1. Public Class Form1  
  2. Inherits System.Windows.Forms.Form  
  3. Public zj  
  4. Public myProcesses() As Process  
  5. Public myProcess As Process  
  6. Private Sub Button1_Click(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles Button1.Click  
  7. ListBox1.Items.Clear()  
  8. myProcesses = Process.GetProcesses()  
  9. For Each myProcess In myProcesses  
  10. ListBox1.Items.Add(myProcess.ProcessName)  
  11. Next  
  12. Label1.Text = "" 
  13. Label1.Text = "本機共有" & ListBox1.Items.Count & "個進程在運行"  
  14. End Sub  
  15.  
  16. Private Sub ListBox1_DoubleClick(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles ListBox1.DoubleClick  
  17. Dim i : Dim f As Integer : Dim h As Integer  
  18. ListBox2.Items.Clear()  
  19. zj = ListBox1.SelectedIndex  
  20. Label2.Text = "進程" & ListBox1.Items.Item(zj) & "的相關信息"  
  21. With ListBox2.Items  
  22. If myProcesses(zj).MainWindowTitle = "" Then  
  23. .Add("無相關主窗口")  
  24. Else  
  25. .Add(myProcesses(zj).MainWindowTitle)  
  26. End If  
  27. .Add(myProcesses(zj).BasePriority & "進程的基本優先級")  
  28. .Add(myProcesses(zj).Handle.ToString & "進程的本機句柄")  
  29. .Add(myProcesses(zj).HandleCount & "進程打開的句柄數")  
  30. .Add(myProcesses(zj).Id & "進程的唯一標識符")  
  31. .Add(myProcesses(zj).MachineName & "進程正在其上運行的計算機的名稱")  
  32. .Add(myProcesses(zj).MainModule.ToString & "進程的主模塊")  
  33. .Add(myProcesses(zj).MainWindowHandle.ToString & "進程主窗口的句柄")  
  34. '.Add(myProcesses(zj).Modules & "")  
  35. .Add(myProcesses(zj).NonpagedSystemMemorySize & "分配給此進程的未分頁的系統內存大小")  
  36. .Add(myProcesses(zj).PagedMemorySize & "分頁的內存大小")  
  37. .Add(myProcesses(zj).PagedSystemMemorySize & "分頁的系統內存大小")  
  38. .Add(myProcesses(zj).PeakPagedMemorySize & "峰值分頁內存大小")  
  39. .Add(myProcesses(zj).PeakVirtualMemorySize & "峰值虛擬內存大小")  
  40. .Add(myProcesses(zj).PrivateMemorySize & "專用內存大小")  
  41. .Add(myProcesses(zj).StartTime & "進程啟動的時間")  
  42. .Add(myProcesses(zj).TotalProcessorTime.Seconds & "進程的總的處理器時間")  
  43. .Add(myProcesses(zj).UsERProcessorTime.Seconds & "進程的用戶處理器時間")  
  44. .Add(myProcesses(zj).VirtualMemorySize & "進程的虛擬內存大小")  
  45. End With  
  46. ListBox3.Items.Clear()  
  47. TabPage1.Text = "進程" & ListBox1.Items.Item(zj) & "的基本信息"  
  48. TabPage2.Text = "進程" & ListBox1.Items.Item(zj) & "相關的線程信息"  
  49. TabPage3.Text = "進程" & ListBox1.Items.Item(zj) & "相關的模塊信息"  
  50. '/////////////////////////////////////////////  
  51. f = myProcesses(zj).Threads.Count  
  52. Label4.Text = "進程" & ListBox1.Items.Item(zj) & "共有" & f & "個相關的線程,線程ID信息如下:"  
  53. Dim int, pk, m, n  
  54. For n = 0 To f - 1  
  55. ListBox3.Items.Add(myProcesses(zj).Threads(n).Id)  
  56. Next  
  57. '///////////////////////////////////////  
  58.  
  59. ListBox5.Items.Clear()  
  60. Dim zha, kl  
  61. zha = myProcesses(zj).Modules.Count  
  62. Label5.Text = "與進程" & ListBox1.Items.Item(zj) & "共有" & zha & "個相關的模塊,模塊位置信息如下:"  
  63. For kl = 0 To zha - 1  
  64. ListBox5.Items.Add(myProcesses(zj).Modules(kl).FileName)  
  65. Next  
  66. End Sub  
  67.  
  68. Private Sub ListBox3_DoubleClick(ByVal sender As Object, 
    ByVal e As System.EventArgs) Handles ListBox3.DoubleClick  
  69. ListBox4.Items.Clear()  
  70. Dim f, n  
  71. f = myProcesses(zj).Threads.Count  
  72. n = ListBox3.SelectedIndex  
  73. Label6.Text = "線程" & ListBox3.Items.Item(n) & "相關信息"  
  74. With ListBox4.Items‘與進程相關的線程信息見System.Diagnostics.processThread類。
    因為 Processes.threads屬性是返回thread對象數組而thread對象數組的實例是由ProcessThread類來創建,
    thread 對象數組的信息是包含在System.Diagnostics. ProcessThread類中。  
  75. .Add(myProcesses(zj).Threads(n).BasePriority)  
  76. .Add(myProcesses(zj).Threads(n).CurrentPriority)  
  77. .Add(myProcesses(zj).Threads(n).PriorityLevel)  
  78. .Add(myProcesses(zj).Threads(n).PrivilegedProcessorTime)  
  79. .Add(myProcesses(zj).Threads(n).StartTime)  
  80. .Add(myProcesses(zj).Threads(n).ThreadState.ToString)  
  81. .Add(myProcesses(zj).Threads(n).TotalProcessorTime.Seconds)  
  82. .Add(myProcesses(zj).Threads(n).UserProcessorTime.Seconds)  
  83. .Add(myProcesses(zj).Threads(n).WaitReason.ToString)  
  84. End With  
  85. End Sub  
  86.  
  87. Private Sub ListBox5_DoubleClick(ByVal sender As Object, 
    ByVal e As System.EventArgs) Handles ListBox5.DoubleClick  
  88. ListBox6.Items.Clear()  
  89. Dim f, n, m  
  90. f = myProcesses(zj).Modules.Count  
  91. n = ListBox5.SelectedIndex  
  92. Label7.Text = "模塊" & ListBox5.Items.Item(n) & "相關信息"  
  93. With ListBox6.Items‘與進程相關的模塊信息見System.Diagnostics. ProcessModule類,
    因為Processes.Modules屬性是返回Modules對象數組而Modules對象數組的實例是由 ProcessModule類來創建,
    Modules對象數組的信息是包含在System.Diagnostics. ProcessModule類中。  
  94. m = Hex(myProcesses(zj).Modules(n).BaseAddress.ToInt32)‘轉換成16進制  
  95. .Add(m)  
  96. m = Hex(myProcesses(zj).Modules(n).EntryPointAddress.ToInt32)  
  97. .Add(m)  
  98. .Add(myProcesses(zj).Modules(n).FileVersionInfo)  
  99. .Add(myProcesses(zj).Modules(n).ModuleMemorySize)  
  100. .Add(myProcesses(zj).Modules(n).ModuleName)  
  101. End With  
  102. End Sub  

最后對程做一點補充說明,各位讀者,當你知道了如何編寫這個程序時,你可能會想如果只是寫一個單純的這個程序你可能會覺得沒什么意義,那如何才可以將這段程序發揮他更大的意義?就讓我來告訴你。其實這段代碼并不是我刻意編寫的,而是一個局域網中的遠程控制的一部分。掃描客戶機上運行的進程,查看客戶機的資源,將獲得的信息發個服務器,并可以通過VB.NET Process類來關閉客戶機上的進程,以便管理者對客戶機進行管理。此外寫這篇文章的另一個目的是希望讀者更快的掌握.net中 System.Diagnostics.Process,System.Diagnostics.processThread,System.Diagnostics. ProcessModule類。在VB.NET和win2000通過 。

【編輯推薦】

  1. 簡單講述VB.NET表間拖放
  2. 五分鐘學會VB.NET實現拖放
  3. 講述強大的VB.NET Web Forms,使用起來卻如此簡單
  4. 分析VB QuickSort應用程序
  5. 兩步就可以掌握VB使用ArrayList類
責任編輯:佚名 來源: IT168
相關推薦

2009-10-26 19:22:29

VB.NET使用Log

2009-10-21 10:45:50

VB.NET Quic

2009-10-14 17:08:44

VB.NET使用Fil

2009-10-16 13:26:53

VB.NET Exce

2009-10-10 16:44:52

VB.NET開發控件

2009-10-15 11:11:08

VB.NET Text

2009-10-15 16:39:00

VB.NET讀取INI

2009-10-14 11:15:06

VB.NET Grou

2009-10-23 13:22:25

VB.NET實現拖動圖

2009-10-13 17:03:55

VB.NET面向對象

2009-10-16 09:35:24

VB.NET制作透明窗

2009-11-02 15:45:03

VB.NET IEnu

2009-10-12 16:39:59

OracleTransVB.NET使用

2009-10-19 08:55:22

VB.NET多重繼承

2009-10-26 18:11:47

VB.NET調用Exc

2009-10-29 09:57:16

VB.NET實現數據綁

2009-10-21 18:28:48

VB.NET表間拖放

2009-10-27 11:39:03

VB.NET事件處理程

2009-11-03 17:31:01

VB.NET窗體

2010-01-15 13:30:50

VB.NET Prog
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品乱码久久久久久按摩观 | 毛片在线免费 | 久久久久国产精品午夜一区 | 懂色tv | 蜜桃毛片| 亚洲精品成人av | 日韩欧美一区二区三区四区 | 在线观看av网站 | 午夜视频在线播放 | 少妇一区二区三区 | 国产日韩一区二区 | 国外成人在线视频网站 | 亚洲美乳中文字幕 | 天天草天天射 | 国产精品成人一区二区三区 | 成人天堂噜噜噜 | 国产婷婷精品 | 亚洲第一av | 青青久久久 | 成人av观看 | 国产精品久久一区 | 麻豆精品国产91久久久久久 | 久草视频观看 | 日韩精品二区 | 久久精品福利视频 | 国产午夜精品视频 | 精品久久一| 国产精彩视频一区 | 免费精品 | 久久国产精品一区 | 久久精品国产免费一区二区三区 | 亚洲天堂中文字幕 | 亚洲美女视频 | 日韩在线精品 | 日韩中文视频 | 精品国产免费一区二区三区五区 | 成人精品国产一区二区4080 | 久久精品国产精品青草 | 综合久久99| 一区二区三区在线看 | 日日草夜夜草 |