My.Computer
My的另一个功能块是Computer对象。My.Computer对象可以让你访问系统底层和应用程序所在硬件平台的信息。示例应用程序的第二个选项卡展示了你在My.Computer对象中能找到的有趣属性。
图三
My.Computer 选项卡
控制这个网格的代码如下:
myAppDS.MyComputer.AddMyComputerRow("Clock", _
My.Computer.Clock.LocalTime)
myAppDS.MyComputer.AddMyComputerRow("GMT Time", _
My.Computer.Clock.GmtTime)
myAppDS.MyComputer.AddMyComputerRow("Tick Count", _
My.Computer.Clock.TickCount)
myAppDS.MyComputer.AddMyComputerRow("GMT Time", _
My.Computer.EventLogs.Item("Application").ReadEntries().Item(1).Message)
myAppDS.MyComputer.AddMyComputerRow("CRTL Key Down", _
My.Computer.Keyboard.CtrlKeyDown.ToString())
myAppDS.MyComputer.AddMyComputerRow("Button Count", _
My.Computer.Mouse.ButtonCount)
myAppDS.MyComputer.AddMyComputerRow("Buttons Swapped", _
My.Computer.Mouse.ButtonsSwapped)
myAppDS.MyComputer.AddMyComputerRow("Mouse Exists", _
My.Computer.Mouse.Exists.ToString())
myAppDS.MyComputer.AddMyComputerRow("Wheel Scroll Lines", _
My.Computer.Mouse.WheelScrollLines.ToString())
myAppDS.MyComputer.AddMyComputerRow("Wheel Exists", _
My.Computer.Mouse.WheelExists)
myAppDS.MyComputer.AddMyComputerRow("Computer Name", _
My.Computer.Name)
myAppDS.MyComputer.AddMyComputerRow("Connection Status", _
My.Computer.Network.ConnectionStatus)
myAppDS.MyComputer.AddMyComputerRow("Connection Status", _
My.Computer.Network.IPAddresses(0).ToString())
myAppDS.MyComputer.AddMyComputerRow("Operating System Platform", _
My.Computer.OperatingSystem.Platform)
myAppDS.MyComputer.AddMyComputerRow("Version", _
My.Computer.OperatingSystem.Version.Major & "." & _
My.Computer.OperatingSystem.Version.Minor & "." & _
My.Computer.OperatingSystem.Version.Revision & "." & _
My.Computer.OperatingSystem.Version.Build)
myAppDS.MyComputer.AddMyComputerRow("Full Name HKEY_CURRENT_USER", _
My.Computer.Registry.CurrentUser.FullName)
myAppDS.MyComputer.AddMyComputerRow("Device Name", _
My.Computer.Screen.DeviceName)
这段代码与控制My.Application选项卡中的网格控件的代码非常相似。用一个类型化的数据集来装载My.Computer对象属性中获得的值,并绑定到一个表格控件。
My.Computer对象的元素不是都能够显示在表格控件里。下表列出的项目包括没有在表格控件里显示的属性或方法。
My.Computer
属性/方法 描述
Clock
允许你访问当前中时区时间和本地时间,以及计数刻度。
EventLogs
允许你访问本地事件日志信息以及创建或删除事件日志。
FileSystem
允许你进行许多IO操作,如复制文件、目录,移动文件、目录,读取或写入文件等。一般情况只需要一行代码。
Keyboard
允许你获取当前键盘上某些案件的状态。比如获取CTRL键、SHIFT键或ATL键是否被按下,或者CAPS LOCK/SCROLL LOCK是否处于打开状态等。
Mouse
允许你获取鼠标的状态以及它所附带的特定的硬件特征,如有几个按键,是否带有滚论等。
Name
告诉你当前正运行的本地计算机的名称。
Network
允许你访问本地计算机的IP地址信息,本地计算机的连接状态,还有Ping一个地址的功能。
Operating System
允许你访问本地计算机平台和版本的信息。
Registry
允许你访问注册表,并提供读取和写入注册表的功能。
Screen
允许你访问系统附带的监视器以及显示属性,如BitsPerPixel和WorkingArea等。
My.Computer在开发中的相关应用
My.Computer提供给你很多访问系统底层的功能,你可以用在很多方面。比如你可以用Network属性和其相关的Ping、PingWithDetails方法轻易地Ping一个网络地址。
Dim pingResult As Microsoft.VisualBasic.Net.PingResult = _
My.Computer.Network.PingWithDetails("www.3leaf.com")
If pingResult.PingSuccesses > 0 Then
Dim pingDetails As String = "Average Ping Time in MS: " & _
ingResult.AveragePingTimeInMilliseconds & vbCrLf & _
"Bytes Received: " & pingResult.BytesReceived.ToString() & vbCrLf & _
"IP Address: " & pingResult.IPAddress.ToString() & vbCrLf &_
"Ping Attempts: " & pingResult.PingAttempts.ToString() & vbCrLf & _
"Ping Successes: " & pingResult.PingSuccesses.ToString()
MessageBox.Show(pingDetails)
Else
MessageBox.Show("Ping of www.3leaf.com was not successful")
End If
这段代码最关键的部分是My.Computer.Network.PingWithDetails()。这行代码返回一个PingResult对象,其中包含了标准Ping动作所返回的数据。如果最少一次Ping操作成功的话,平均响应时间,获得的字节数,总Ping数目和成功数目都会显示在一个消息框中。My.Computer.Network还提供一个简化版的Ping,只返回True或False以示Ping成功与否。像这样Ping一个地址的功能可以让你方便地确定是否能与服务器正式建立通信。通过使用My.Computer.Network.ConnectionStatus,你还可以方便地确定当前网络连接的状态。ConnectionStatus属性根据计算机现在是否有网络连接而返回True或False。
My.Computer另一个很好的应用是在需要访问文件系统的时候。My.Computer.FileSystem提供给你更好的访问文件系统的方法,所需的代码比用VB.NET来实现更少。用My.Computer.FileSystem,你可以只用一行代码完成下列任务。
· 在文件后面附加文本。
· 从文件中读取所有文本。
· 复制文件夹时创建所有完整路径所需的父文件夹。
· 移动文件夹时创建所有完整路径所需的父文件夹。
你还能用Microsoft.VisualBasic.FileIO命名空间中的类型简化文件夹、文件和驱动器的操作。这些类型一般都是My.Computer.FileSystem对象的属性和方法返回的类型。
下面的例子是用My在文件末尾附加文本所需的全部代码。
My.Computer.FileSystem.AppendText(filePath, “Hello from " & _ “My.Computer.FileSystem”)
如果你想读取一个文件的全部文本,只需下列代码即可做到。
My.Computer.FileSystem.ReadAllText(filePath)
复制和移动文件夹变得非常容易。
My.Computer.FileSystem.CopyFolder(sourcePath, targetPath, True, True)
上面这行代码将文件夹从sourcePath复制到targetPath。最后两个布尔型参数指定targetPath是否要覆盖已经存在的文件夹以及指定是否需要创建所需的父文件夹。
刚才提到过FileSystem对象的许多属性和方法都可以返回Drive、Folder或File类型的对象。这些Microsoft.VisualBasic.FileIO名字空间中的对象封装了许多新的属性和方法,可以让一般的编程工作得到简化。比如可以用一行代码可以取得“我得文档”文件夹所在的驱动器。
My.Computer.FileSystem.SpecialFolders.MyDocuments.Drive.DriveName
更重要的是你可以获得“我得文档”文件夹所在的驱动器所剩余的磁盘空间。
My.Computer.FileSystem.SpecialFolders.MyDocuments.Drive.FreeSpace
用文件对象对特定文件或文件夹的操作同样非常容易。比如你可以用一行代码轻松地重名名文件。
My.Computer.FileSystem.SpecialFolders.MyDocuments.Drive.FreeSpace
My.User
My名字空间的下一个功能块是User对象。My.User对象允许你获取当前登录用户的信息如用户名,域名,以 [1] [2] 下一页 [VB.NET程序]Visual Basic 6 逆向工程与反逆向工程 (2) [VB.NET程序]Visual Basic 6 逆向工程与反逆向工程 (1) [VB.NET程序]用Visual Basic创建复杂窗体 [VB.NET程序]Visual Basic的类对于面向对象的支持 [VB.NET程序]如何在Visual Basic 6.0 中连接加密的Access数据库 [VB.NET程序]使用Visual Basic操纵XML文档 [VB.NET程序]Visual Basic.Net连各种数据库的几种方法 [VB.NET程序]Visual Basic .NET资源工具包 [VB.NET程序]效率提高两倍!——Visual Basic.net 新力量 [VB.NET程序]复杂和高效——Visual Basic.net新力量
|