我对视觉基础很陌生,所以如果我犯了任何愚蠢的明显错误,请原谅我,欢迎提出任何建议提前致谢. 解决方案 将可能失败的部分放在 Try-Catch 语句中Public VideoCardMemory As String = getinfo(infotypes.VideocardMem)公共函数 getinfo(ByVal infotype As infotypes) As String尝试...价值 = ......抓住value = "无法访问!"结束尝试返回值结束函数Im writing a application in visual basic to tell the user about their pc.All this is in a module Imports Microsoft.VisualBasic.DevicesImports System.ManagementImports System.NetImports System.IOImports System.Windows.FormsImports System.Deployment.ApplicationModule ComputerSpecModule Public Enum infotypes ProcesserName VideocardName VideocardMem End Enum Public Function getinfo(ByVal infotype As infotypes) As String Dim info As New ComputerInfo : Dim value, vganame, vgamem, proc As String Dim searcher As New Management.ManagementObjectSearcher( _ "root\CIMV2", "Select * FROM Win32_VideoController") Dim searcher1 As New Management.ManagementObjectSearcher( _ "Select * FROM Win32_Processor") If infotype = infotypes.ProcesserName Then For Each queryObject As ManagementObject In searcher1.Get proc = queryObject.GetPropertyValue("Name").ToString Next value = proc ElseIf infotype = infotypes.VideocardName Then For Each queryObject As ManagementObject In searcher.Get vganame = queryObject.GetPropertyValue("Name").ToString Next value = vganame ElseIf infotype = infotypes.VideocardMem Then For Each queryObject As ManagementObject In searcher.Get vgamem = queryObject.GetPropertyValue("AdapterRAM").ToString Next value = Math.Round((((CDbl(Convert.ToDouble(Val(vgamem))) / 1024)) / 1024), 2) & " MB" End If Return value End Function Public oAddr As System.Net.IPAddress 'gets the ipv4 add Public sAddr As String Public EmailStarterMessage As String = "This message was sent by SpecMee. SpecMee is a light weight application designed to allow the users to find out the specifications of their machines. Please download this application free at http://www.wilson18.com/projects/SpecMee/" + _ Environment.NewLine + _ "" + _ Environment.NewLine + _ "" + _ Environment.NewLine + _ "" 'PC SPEC CONTENT Public ComputerName As String = (My.Computer.Name.ToString) Public myOS As String = (My.Computer.Info.OSFullName) Public Processor As String = (getinfo(infotypes.ProcesserName)) Public HDD As String = (Format((My.Computer.FileSystem.Drives.Item(0).TotalSize.ToString / 1024) / 1024 / 1024, "###,###,##0 GB")) Public RAM As String = (Format((My.Computer.Info.TotalPhysicalMemory / 1024) / 1024 / 1024, "###,###,##0 GB")) Public VideoCard As String = (getinfo(infotypes.VideocardName)) Public VideoCardMemory As String = (getinfo(infotypes.VideocardMem)) Public Function Resolution() As String Dim intx As Integer = Screen.PrimaryScreen.Bounds.Width Dim inty As Integer = Screen.PrimaryScreen.Bounds.Height Return intx & " x " & inty End Function Public Function InternalIPAddress() With System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()) oAddr = New System.Net.IPAddress(.AddressList(0).Address) InternalIPAddress = oAddr.ToString End With End Function Public Function ExternalIPAddress() As String Dim uri_val As New Uri("http://www.wilson18.com/projects/SpecMee/curip.php") Dim request As HttpWebRequest = HttpWebRequest.Create(uri_val) request.Method = WebRequestMethods.Http.Get Dim response As HttpWebResponse = request.GetResponse() Dim reader As New StreamReader(response.GetResponseStream()) Dim myip As String = reader.ReadToEnd() response.Close() Return myip End Function Public EmailContent As String = ("Computer Name: " & ComputerName & Environment.NewLine & "Operating System: " & myOS & Environment.NewLine & "Processor: " & Processor & Environment.NewLine & "Hard Drive Size : " & HDD & Environment.NewLine & "RAM: " & RAM & Environment.NewLine & "Graphics Card: " & VideoCard & Environment.NewLine & "Graphics Onboard Memory: " & VideoCardMemory & Environment.NewLine & "Resolution: " & Resolution() & Environment.NewLine & "Internal IP Address: " & InternalIPAddress() & Environment.NewLine & "External IP Address: " & ExternalIPAddress() & Environment.NewLine)End ModuleThe problem I am having is that if one of the things in the module fails such as if the users graphics card does not have any onboard memory then it will fail.This is causing everything else to fail aswell...I am very new to visual basic so ifyou could please excuse me if I have made any stupidly obvious errors and any suggestions are welcomeThanks in advance. 解决方案 Place the parts that can fail in a Try-Catch-statementPublic VideoCardMemory As String = getinfo(infotypes.VideocardMem)Public Function getinfo(ByVal infotype As infotypes) As String Try ... value = ... ... Catch value = "Cannot be accessed!" End Try Return valueEnd Function 这篇关于视觉基础和模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 08-29 06:01