在win nt,win 2000,win xp中都有一个性能查看器,我们可以用它来查看计算机上正在运行的程序,获得与程序相关的主窗口名,和查看cpu和内存,虚拟页面的使用情况。但是对于更高要求的计算机使用人员来说,这些是不够的,特别是一些diy的发烧友,他们希望自己可以随时对自己的计算机进行查看,了解更多的信息从而可以知道自己的计算机是否应该升级了,是否该对虚拟页面做出调整,是否该换cpu,还是增加内存。
由于以上情况,所以我们完全有理由做一个更好的查看器。在进行编写代码以前我们还需要知道一些基本知识,即proccess,thread,module。现在我们先来学习一下proecss的基本知识。
1.Proccss的概念
用最简短的话来说,进程就是当前运行的应用程序。运行的应用程序包括exe,dll这两种文件。文件和进程的差别在与,文件是保存在磁盘上的,是静止的,计算机不会去调用文件,而进程是非静止的,正是由于着个原因,所以计算机每调用一个进程就需要一定的资源。这些资源包括内存,虚拟页面,句柄,gdi……
在.net中我门可以用Process 类,(他位于System.Diagnostics空间中)提供对正在计算机上运行的进程的访问。使用 Process类,可以获取当前运行的进程的列表,或者启动新的进程。Process 类用于访问系统进程。初始化 Process类后,可使用该类来获取有关当前运行的进程的信息。此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。
系统进程在系统上由其进程标识符唯一标识。与许多 Windows 资源一样,进程也由其句柄标识,而句柄在计算机上可能不唯一。句柄是表示资源标识符的一般术语。即使进程已退出,操作系统仍保持进程句柄,该句柄通过 Process 组件的 Handle 属性访问。因此,可以获取进程的管理信息,如 ExitCode(通常,或者为零表示成功,或者为非零错误代码)和 ExitTime。句柄是非常有价值的资源。
2. thread的概念
进程由一个或多个线程组成。换句话说线程是将进程分成了多个小的部分.每个线程都有优先级,在较高优先级的线程完成任务的时候,较低优先级的线程可能会被迫等待。在多处理器计算机上,将多个线程移到不同的处理器上,从而对 CPU 负荷进行平衡。每个进程启动时都具有一个线程,该线程称为主线程。任何线程都可创建其他线程。进程中的所有线程共享该进程的地址空间。
在.net中可以用System.Diagnostics的ProcessThread类来与进程获相关的线程信息.用System.Threading的Thread类来创建新线程.请注意Thread类不可以用来访问其他进程的线程,他只可以用来创建一个线程而已,一定要记住这点。如果你还想对线程进行更多的操作,可以用System.Diagnostics.ProcessThread类中返回的id,通过它作为api函数的参数来操作线程。
3. module的概念
模块指的是可执行文件或动态链接库 (DLL)。每个进程包含一个或多个模块。可以使用System.Diagnostics的ProcessModule类来获得有关模块的信息,这个类中有一个很有用的属性EntryPointAddress他可以返回获取在系统加载和运行模块时运行的函数的内存地址。然后用Visual Studio6.0中的工具,查看该地址就可以知道是什么函数!然后根据函数名查看相关的资料,就可以知道这个应用程序的基本编程思路,这个功能对程序员很有用。
了解了基本知识,现在就就可以编程了。首先建立一个窗口,在窗口上加上一个TabControl分页控件,在第一页加上label1,label2,listbox1,listbox2,button1。在第二页上加上label4,label6,listbox3,listbox4,在第三页上加上label5,label7,listbox5,listbox6。将所有的listbox控件的HorizontalScrollbar属性设置为true
然后添加如下代码(vb.net编写)
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 & "峰值分页内存大小")
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关文章
热点关注
- 在asp.net中为Web用户控件
- .NET3.5和VS2008中的ASP.N
- 对.NET Framework 反射的
- Asp.net Ajax 1.0 异步回
- ASP.NET2.0的控件状态和视
- 通过避免下列10个常见ASP.
- 中国地区三级联动下拉菜单
- 解析Asp.net中资源本地化
- 一个无刷新效果定时自动更
- 动态创建MSSQL数据库表存
- asp.net用url重写URLReWri
- 使用ASP.NET Atlas编写显
- 关于ASP.NET调用JavaScrip
- 使用ASP.Net Forms模式实
- asp.net ajax 使用updatep
- 优化ASP.NET应用程序性能
- ASP.NET中动态修改web.con
- ASP.NET中利用Crystal Rep
- asp.net如何生成图片验证
- 基于ASP.NET的Web动态控件
- 分享个极好的无刷新二级联
- asp.net 2.0 上传控件的使
- 创建ASP.NET监视服务器进
- Asp.net把UTF-8编码转换为
- 开发基于ASP.NET WebServi
- asp.net结合html,javascr
- asp.net 2.0下嵌套masterp
- 正则表达式提取数字
- 最新版FreeTextBox(版本3.
- 获取本机上配置好的Oracle
- ASP.Net全局变量的设置和
- VB几个有用的函数
- 用代码画折线图/柱形图/
- FCKeditor2.2 ASP.NET2.0
- 客户端回调实现gridView无
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD




