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

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

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

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

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

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

VB.NET Process類(lèi)的概念

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

在.net中我門(mén)可以用VB.NET Process類(lèi),(他位于System.Diagnostics空間中)提供對(duì)正在計(jì)算機(jī)上運(yùn)行的進(jìn)程的訪問(wèn)。使用VB.NET Process類(lèi),可以獲取當(dāng)前運(yùn)行的進(jìn)程的列表,或者啟動(dòng)新的進(jìn)程。VB.NET Process類(lèi)用于訪問(wèn)系統(tǒng)進(jìn)程。初始化VB.NET Process類(lèi)后,可使用該類(lèi)來(lái)獲取有關(guān)當(dāng)前運(yùn)行的進(jìn)程的信息。此類(lèi)信息包括線程集、加載的模塊(.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ù)語(yǔ)。即使進(jìn)程已退出,操作系統(tǒng)仍保持進(jìn)程句柄,該句柄通過(guò) Process 組件的 Handle 屬性訪問(wèn)。因此,可以獲取進(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("無(wú)相關(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)程打開(kāi)的句柄數(shù)")  
  30. .Add(myProcesses(zj).Id & "進(jìn)程的唯一標(biāo)識(shí)符")  
  31. .Add(myProcesses(zj).MachineName & "進(jìn)程正在其上運(yùn)行的計(jì)算機(jī)的名稱(chēng)")  
  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)程的未分頁(yè)的系統(tǒng)內(nèi)存大小")  
  36. .Add(myProcesses(zj).PagedMemorySize & "分頁(yè)的內(nèi)存大小")  
  37. .Add(myProcesses(zj).PagedSystemMemorySize & "分頁(yè)的系統(tǒng)內(nèi)存大小")  
  38. .Add(myProcesses(zj).PeakPagedMemorySize & "峰值分頁(yè)內(nèi)存大小")  
  39. .Add(myProcesses(zj).PeakVirtualMemorySize & "峰值虛擬內(nèi)存大小")  
  40. .Add(myProcesses(zj).PrivateMemorySize & "專(zhuān)用內(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)程的用戶(hù)處理器時(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)的線程信息見(jiàn)System.Diagnostics.processThread類(lèi)。
    因?yàn)?nbsp;Processes.threads屬性是返回thread對(duì)象數(shù)組而thread對(duì)象數(shù)組的實(shí)例是由ProcessThread類(lèi)來(lái)創(chuàng)建,
    thread 對(duì)象數(shù)組的信息是包含在System.Diagnostics. ProcessThread類(lèi)中。  
  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)的模塊信息見(jiàn)System.Diagnostics. ProcessModule類(lèi),
    因?yàn)镻rocesses.Modules屬性是返回Modules對(duì)象數(shù)組而Modules對(duì)象數(shù)組的實(shí)例是由 ProcessModule類(lèi)來(lái)創(chuàng)建,
    Modules對(duì)象數(shù)組的信息是包含在System.Diagnostics. ProcessModule類(lèi)中。  
  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ǔ)充說(shuō)明,各位讀者,當(dāng)你知道了如何編寫(xiě)這個(gè)程序時(shí),你可能會(huì)想如果只是寫(xiě)一個(gè)單純的這個(gè)程序你可能會(huì)覺(jué)得沒(méi)什么意義,那如何才可以將這段程序發(fā)揮他更大的意義?就讓我來(lái)告訴你。其實(shí)這段代碼并不是我刻意編寫(xiě)的,而是一個(gè)局域網(wǎng)中的遠(yuǎn)程控制的一部分。掃描客戶(hù)機(jī)上運(yùn)行的進(jìn)程,查看客戶(hù)機(jī)的資源,將獲得的信息發(fā)個(gè)服務(wù)器,并可以通過(guò)VB.NET Process類(lèi)來(lái)關(guān)閉客戶(hù)機(jī)上的進(jìn)程,以便管理者對(duì)客戶(hù)機(jī)進(jìn)行管理。此外寫(xiě)這篇文章的另一個(gè)目的是希望讀者更快的掌握.net中 System.Diagnostics.Process,System.Diagnostics.processThread,System.Diagnostics. ProcessModule類(lèi)。在VB.NET和win2000通過(guò) 。

【編輯推薦】

  1. 簡(jiǎn)單講述VB.NET表間拖放
  2. 五分鐘學(xué)會(huì)VB.NET實(shí)現(xiàn)拖放
  3. 講述強(qiáng)大的VB.NET Web Forms,使用起來(lái)卻如此簡(jiǎn)單
  4. 分析VB QuickSort應(yīng)用程序
  5. 兩步就可以掌握VB使用ArrayList類(lèi)
責(zé)任編輯:佚名 來(lái)源: 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開(kāi)發(fā)控件

2009-10-23 13:22:25

VB.NET實(shí)現(xiàn)拖動(dòng)圖

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-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)

主站蜘蛛池模板: 欧美日韩视频 | 欧美淫| 神马九九 | 久草在线免费资源 | 激情欧美日韩一区二区 | 国产a区 | 亚洲国产成人精品女人 | 久久99精品久久久久久 | 精品国产高清一区二区三区 | 9999国产精品欧美久久久久久 | 精品1区 | 婷婷毛片 | 日韩欧美视频 | 国精产品一区二区三区 | 91精品久久久久久久99 | 免费av观看 | 亚洲第1页| 神马影院一区二区三区 | 亚洲国产精品久久久久 | av一二三区 | 日韩男人天堂 | 欧美一区二区在线看 | 九九热re| 精精久久 | 高清国产一区二区 | 91精品国产乱码久久久久久久久 | 欧美日韩视频在线 | 成人黄视频在线观看 | 国产69精品久久99不卡免费版 | 黑人巨大精品欧美一区二区免费 | 欧美啊v在线观看 | 一区二区三区视频播放 | 亚洲va欧美va天堂v国产综合 | 久久极品| 日韩激情网 | 中国三级黄色录像 | 中文字幕亚洲视频 | 在线观看视频一区 | 一区二区三区四区五区在线视频 | 色就干 | av片免费|