偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用實(shí)例講述VB.NET Process類

開發(fā) 后端
這里介紹VB.NET Process類,使用VB.NET Process類,可以獲取當(dāng)前運(yùn)行的進(jìn)程的列表,或者啟動(dòng)新的進(jìn)程。VB.NET Process類用于訪問系統(tǒng)進(jìn)程。初始化VB.NET Process類后,可使用該類來獲取有關(guān)當(dāng)前運(yùn)行的進(jìn)程的信息。

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

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

由于以上情況,所以我們完全有理由做一個(gè)更好的查看器。在進(jìn)行編寫代碼以前我們還需要知道一些基本知識(shí),即proccess,thread,module?,F(xiàn)在我們先來學(xué)習(xí)一下proecss的基本知識(shí)。

VB.NET Process類的概念

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

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

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

  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 = "本機(jī)共有" & ListBox1.Items.Count & "個(gè)進(jìn)程在運(yùn)行"  
  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 = "進(jìn)程" & ListBox1.Items.Item(zj) & "的相關(guān)信息"  
  21. With ListBox2.Items  
  22. If myProcesses(zj).MainWindowTitle = "" Then  
  23. .Add("無相關(guān)主窗口")  
  24. Else  
  25. .Add(myProcesses(zj).MainWindowTitle)  
  26. End If  
  27. .Add(myProcesses(zj).BasePriority & "進(jìn)程的基本優(yōu)先級(jí)")  
  28. .Add(myProcesses(zj).Handle.ToString & "進(jìn)程的本機(jī)句柄")  
  29. .Add(myProcesses(zj).HandleCount & "進(jìn)程打開的句柄數(shù)")  
  30. .Add(myProcesses(zj).Id & "進(jìn)程的唯一標(biāo)識(shí)符")  
  31. .Add(myProcesses(zj).MachineName & "進(jìn)程正在其上運(yùn)行的計(jì)算機(jī)的名稱")  
  32. .Add(myProcesses(zj).MainModule.ToString & "進(jìn)程的主模塊")  
  33. .Add(myProcesses(zj).MainWindowHandle.ToString & "進(jìn)程主窗口的句柄")  
  34. '.Add(myProcesses(zj).Modules & "")  
  35. .Add(myProcesses(zj).NonpagedSystemMemorySize & "分配給此進(jìn)程的未分頁的系統(tǒng)內(nèi)存大小")  
  36. .Add(myProcesses(zj).PagedMemorySize & "分頁的內(nèi)存大小")  
  37. .Add(myProcesses(zj).PagedSystemMemorySize & "分頁的系統(tǒng)內(nèi)存大小")  
  38. .Add(myProcesses(zj).PeakPagedMemorySize & "峰值分頁內(nèi)存大小")  
  39. .Add(myProcesses(zj).PeakVirtualMemorySize & "峰值虛擬內(nèi)存大小")  
  40. .Add(myProcesses(zj).PrivateMemorySize & "專用內(nèi)存大小")  
  41. .Add(myProcesses(zj).StartTime & "進(jìn)程啟動(dòng)的時(shí)間")  
  42. .Add(myProcesses(zj).TotalProcessorTime.Seconds & "進(jìn)程的總的處理器時(shí)間")  
  43. .Add(myProcesses(zj).UsERProcessorTime.Seconds & "進(jìn)程的用戶處理器時(shí)間")  
  44. .Add(myProcesses(zj).VirtualMemorySize & "進(jìn)程的虛擬內(nèi)存大小")  
  45. End With  
  46. ListBox3.Items.Clear()  
  47. TabPage1.Text = "進(jìn)程" & ListBox1.Items.Item(zj) & "的基本信息"  
  48. TabPage2.Text = "進(jìn)程" & ListBox1.Items.Item(zj) & "相關(guān)的線程信息"  
  49. TabPage3.Text = "進(jìn)程" & ListBox1.Items.Item(zj) & "相關(guān)的模塊信息"  
  50. '/////////////////////////////////////////////  
  51. f = myProcesses(zj).Threads.Count  
  52. Label4.Text = "進(jìn)程" & ListBox1.Items.Item(zj) & "共有" & f & "個(gè)相關(guān)的線程,線程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 = "與進(jìn)程" & ListBox1.Items.Item(zj) & "共有" & zha & "個(gè)相關(guān)的模塊,模塊位置信息如下:"  
  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) & "相關(guān)信息"  
  74. With ListBox4.Items‘與進(jìn)程相關(guān)的線程信息見System.Diagnostics.processThread類。
    因?yàn)?nbsp;Processes.threads屬性是返回thread對(duì)象數(shù)組而thread對(duì)象數(shù)組的實(shí)例是由ProcessThread類來創(chuàng)建,
    thread 對(duì)象數(shù)組的信息是包含在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) & "相關(guān)信息"  
  93. With ListBox6.Items‘與進(jìn)程相關(guān)的模塊信息見System.Diagnostics. ProcessModule類,
    因?yàn)镻rocesses.Modules屬性是返回Modules對(duì)象數(shù)組而Modules對(duì)象數(shù)組的實(shí)例是由 ProcessModule類來創(chuàng)建,
    Modules對(duì)象數(shù)組的信息是包含在System.Diagnostics. ProcessModule類中。  
  94. m = Hex(myProcesses(zj).Modules(n).BaseAddress.ToInt32)‘轉(zhuǎn)換成16進(jìn)制  
  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  

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

【編輯推薦】

  1. 簡單講述VB.NET表間拖放
  2. 五分鐘學(xué)會(huì)VB.NET實(shí)現(xiàn)拖放
  3. 講述強(qiáng)大的VB.NET Web Forms,使用起來卻如此簡單
  4. 分析VB QuickSort應(yīng)用程序
  5. 兩步就可以掌握VB使用ArrayList類
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

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開發(fā)控件

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實(shí)現(xiàn)拖動(dòng)圖

2009-10-13 17:03:55

VB.NET面向?qū)ο?/a>

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調(diào)用Exc

2009-10-29 09:57:16

VB.NET實(shí)現(xiàn)數(shù)據(jù)綁

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
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)