网站首页 工具软件 操作系统 办公软件 网页制作 PHP教程 script脚本专栏 photoshop教程 其他精品教程
我发布的文章 - 教程搜索 - 交流论坛 - 帮助中心 - 网站首页 网络工具 - 常用工具 - 媒体工具 - 系统工具 - 实用工具 NT/2003 - Win Xp - Win2000 - DOS/Win9x - IE/注册表 - Linux - 苹 果 Office - Word - Excel - PowerPoint - 输入法 - 邮件处理 Flash - Dreamweaver - Fireworks - FrontPage - HTMLCSS 基础文章 - PHP函数 - PHP技巧 - 数据库相关 - 高级应用 - PHP安装 - 转载精华 - 常见问题 综 合 类 - 状 态 栏 - 游 戏 类 - 页面背景 - 页面特效 - 页面导航 - 文本操作 - 文本特效 - 图形特效 - 鼠标特效 - 时间日期 - 密 码 类 文字特效 - 按钮与图标 - 色彩运用 - 滤镜魔法 - 综合实例 XML教程 - DELPHI基础教程 - VB教程
首页 -> 其他精品教程 -> VB教程

TOP

用Vb.net实现超级ptm查看器 (2)
文章内容
相关信息
用户评论
文章内容


了解了基本知识,现在就就可以编程了。首先建立一个窗口,在窗口上加上一个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 & "峰值分页内存大小")
            .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类。
	因为Proc esses.threads属性是返回thread对象数组而thread对象数组的实例是由ProcessThread类
来创建,threa d对象数组的信息是包含在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
End Class


现在就大工告成了。

最后做一点补充说明:如果只是写一个单纯的这个程序你可能会觉得没什么意义,那如何才可以将这段程序发挥更大意义呢?

其实这段代码并不是我刻意编写的,而是一个局域网中的远程控制的一部分。扫描客户机上运行的进程,查看客户机的资源,将获得的信息发个服务器,并可以通过Processes类来关闭客户机上的进程,以便管理者对客户机进行管理。此外写这篇文章的另一个目的是希望读者更快的掌握.net中System.Diagnostics.Process,System.Diagnostics.processThread,System.Diagnostics. ProcessModule类。

运行如图



点击看大图




点击看大图




点击看大图


相关信息
用Vb.net实现超级ptm查看器 (2)
发布者:mmcbbs
浏览量:170
发布日期:2005-04-10 10:27:43
所属专题:
用户评论
称  呼:
内  容:

广告位

广告招租,欢迎抢订

热门信息

·什么是ODBC
·初识WTL(上)
·理解ActiveX控件的一些背景..
·VB.NET 的新特点:变..
·探讨VB.Net中的数据绑定
·用VB.NET打造NameSpace
·VB.NET中的面向对象编程特征
·用VB和MTS开发多层数据库应..

推荐信息