Hi, I am new to VB6 and am looking to get a bunch of statistics of a machine. CPU MHz/Load, RAM MB/Load, Networkcards MB in/MB out etc..
Printable View
Hi, I am new to VB6 and am looking to get a bunch of statistics of a machine. CPU MHz/Load, RAM MB/Load, Networkcards MB in/MB out etc..
I know if you use the default About form it gives the option of displaying all the system information. If you look in that code you might find your answer.
This will give you all the details of your processor.
VB Code:
Option Explicit 'Add a reference tro MS WMI Scripting Library Private Sub Command1_Click() Dim arrComputers() As Variant Dim strComputer As Variant Dim objWMIService As Object Dim colItems As Object Dim objItem As Object Dim strPowerManagementCapabilities As String Dim strProcessor As String Const wbemFlagReturnImmediately = &H10 Const wbemFlagForwardOnly = &H20 arrComputers = Array("localhost") For Each strComputer In arrComputers strProcessor = strProcessor & "Computer: " & strComputer & vbNewLine Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objItem In colItems strProcessor = strProcessor & "AddressWidth: " & objItem.AddressWidth & vbNewLine strProcessor = strProcessor & "Architecture: " & objItem.Architecture & vbNewLine strProcessor = strProcessor & "Availability: " & objItem.Availability & vbNewLine strProcessor = strProcessor & "Caption: " & objItem.Caption & vbNewLine strProcessor = strProcessor & "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode & vbNewLine strProcessor = strProcessor & "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig & vbNewLine strProcessor = strProcessor & "CpuStatus: " & objItem.CpuStatus & vbNewLine strProcessor = strProcessor & "CreationClassName: " & objItem.CreationClassName & vbNewLine strProcessor = strProcessor & "CurrentClockSpeed: " & objItem.CurrentClockSpeed & vbNewLine strProcessor = strProcessor & "CurrentVoltage: " & objItem.CurrentVoltage & vbNewLine strProcessor = strProcessor & "DataWidth: " & objItem.DataWidth & vbNewLine strProcessor = strProcessor & "Description: " & objItem.Description & vbNewLine strProcessor = strProcessor & "DeviceID: " & objItem.DeviceID & vbNewLine strProcessor = strProcessor & "ErrorCleared: " & objItem.ErrorCleared & vbNewLine strProcessor = strProcessor & "ErrorDescription: " & objItem.ErrorDescription & vbNewLine strProcessor = strProcessor & "ExtClock: " & objItem.ExtClock & vbNewLine strProcessor = strProcessor & "Family: " & objItem.Family & vbNewLine strProcessor = strProcessor & "InstallDate: " & objItem.InstallDate & vbNewLine strProcessor = strProcessor & "L2CacheSize: " & objItem.L2CacheSize & vbNewLine strProcessor = strProcessor & "L2CacheSpeed: " & objItem.L2CacheSpeed & vbNewLine strProcessor = strProcessor & "LastErrorCode: " & objItem.LastErrorCode & vbNewLine strProcessor = strProcessor & "Level: " & objItem.Level & vbNewLine strProcessor = strProcessor & "LoadPercentage: " & objItem.LoadPercentage & vbNewLine strProcessor = strProcessor & "Manufacturer: " & objItem.Manufacturer & vbNewLine strProcessor = strProcessor & "MaxClockSpeed: " & objItem.MaxClockSpeed & vbNewLine strProcessor = strProcessor & "Name: " & objItem.Name & vbNewLine strProcessor = strProcessor & "OtherFamilyDescription: " & objItem.OtherFamilyDescription & vbNewLine strProcessor = strProcessor & "PNPDeviceID: " & objItem.PNPDeviceID & vbNewLine strProcessor = strProcessor & "PowerManagementCapabilities: " & objItem.PowerManagementCapabilities & vbNewLine strProcessor = strProcessor & "PowerManagementSupported: " & objItem.PowerManagementSupported & vbNewLine strProcessor = strProcessor & "ProcessorId: " & objItem.ProcessorId & vbNewLine strProcessor = strProcessor & "ProcessorType: " & objItem.ProcessorType & vbNewLine strProcessor = strProcessor & "Revision: " & objItem.Revision & vbNewLine strProcessor = strProcessor & "Role: " & objItem.Role & vbNewLine strProcessor = strProcessor & "SocketDesignation: " & objItem.SocketDesignation & vbNewLine strProcessor = strProcessor & "Status: " & objItem.Status & vbNewLine strProcessor = strProcessor & "StatusInfo: " & objItem.StatusInfo & vbNewLine strProcessor = strProcessor & "Stepping: " & objItem.Stepping & vbNewLine strProcessor = strProcessor & "SystemCreationClassName: " & objItem.SystemCreationClassName & vbNewLine strProcessor = strProcessor & "SystemName: " & objItem.SystemName & vbNewLine strProcessor = strProcessor & "UniqueId: " & objItem.UniqueId & vbNewLine strProcessor = strProcessor & "UpgradeMethod: " & objItem.UpgradeMethod & vbNewLine strProcessor = strProcessor & "Version: " & objItem.Version & vbNewLine strProcessor = strProcessor & "VoltageCaps: " & objItem.VoltageCaps & vbNewLine MsgBox strProcessor Next Next End Sub
I think the "About" form thing just shells Sysinfo. The 2 best ways I've found to gather system information are Windows Management Instrumentation and the GetSystemInfo API call.
GetSystemInfo getting processor type:
VB Code:
Option Explicit Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO) Private Type SYSTEM_INFO dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOrfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long dwReserved As Long End Type Const C_MEGABYTE = 8388608 Private Sub ProcessorType() Dim uSysInfo As SYSTEM_INFO Dim lProcType As Long Dim sOut As String GetSystemInfo uSysInfo lProcType = uSysInfo.dwProcessorType sOut = "Processor Type:" & vbCrLf & CStr(lProcType) MsgBox (sOut) End Sub
WMI example for getting all retrievable disk serial numbers:
VB Code:
Private Sub DiskSerials() Dim oList As Object Dim sOut As String Dim oObject As Object Set oList = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_LogicalDisk") For Each oObject In oList sOut = sOut & "Disk Serial Number: " & oObject.VolumeSerialNumber & vbCrLf Next oObject MsgBox (sOut) Set oList = Nothing Set oObject = Nothing End Sub
Read about WMI here: http://msdn.microsoft.com/library/de..._reference.asp
EDIT: Sorry 'bout the overpost RobDog. You caught me fixing the formatting in my vbcode tags. For some reason I can't cut and paste out of my IDE and have the code tags make it look right anymore. :confused:
Download Scriptomatic2 from the Scripting Guy (Microsoft) and you can automatically generate WMI scripts similar to the code I posted. You have to convert it to VB but its not that hard. ;)
Scriptomatic2
Or computer info in general.
This script was produced by ScriptoMatic2, which is a free download.
There are a lot of different scripts that it will generate, based on the information that you need. I just use cscript to display the information. If you just rename it as a vbs file, it will show the info in messageboxes.
VB Code:
On Error Resume Next Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 arrComputers = Array("127.0.0.1") For Each strComputer In arrComputers WScript.Echo WScript.Echo "==========================================" WScript.Echo "Computer: " & strComputer WScript.Echo "==========================================" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _ wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objItem In colItems WScript.Echo "AdminPasswordStatus: " & objItem.AdminPasswordStatus WScript.Echo "AutomaticResetBootOption: " & objItem.AutomaticResetBootOption WScript.Echo "AutomaticResetCapability: " & objItem.AutomaticResetCapability WScript.Echo "BootOptionOnLimit: " & objItem.BootOptionOnLimit WScript.Echo "BootOptionOnWatchDog: " & objItem.BootOptionOnWatchDog WScript.Echo "BootROMSupported: " & objItem.BootROMSupported WScript.Echo "BootupState: " & objItem.BootupState WScript.Echo "Caption: " & objItem.Caption WScript.Echo "ChassisBootupState: " & objItem.ChassisBootupState WScript.Echo "CreationClassName: " & objItem.CreationClassName WScript.Echo "CurrentTimeZone: " & objItem.CurrentTimeZone WScript.Echo "DaylightInEffect: " & objItem.DaylightInEffect WScript.Echo "Description: " & objItem.Description WScript.Echo "Domain: " & objItem.Domain WScript.Echo "DomainRole: " & objItem.DomainRole WScript.Echo "EnableDaylightSavingsTime: " & objItem.EnableDaylightSavingsTime WScript.Echo "FrontPanelResetStatus: " & objItem.FrontPanelResetStatus WScript.Echo "InfraredSupported: " & objItem.InfraredSupported strInitialLoadInfo = Join(objItem.InitialLoadInfo, ",") WScript.Echo "InitialLoadInfo: " & strInitialLoadInfo WScript.Echo "InstallDate: " & WMIDateStringToDate(objItem.InstallDate) WScript.Echo "KeyboardPasswordStatus: " & objItem.KeyboardPasswordStatus WScript.Echo "LastLoadInfo: " & objItem.LastLoadInfo WScript.Echo "Manufacturer: " & objItem.Manufacturer WScript.Echo "Model: " & objItem.Model WScript.Echo "Name: " & objItem.Name WScript.Echo "NameFormat: " & objItem.NameFormat WScript.Echo "NetworkServerModeEnabled: " & objItem.NetworkServerModeEnabled WScript.Echo "NumberOfProcessors: " & objItem.NumberOfProcessors strOEMLogoBitmap = Join(objItem.OEMLogoBitmap, ",") WScript.Echo "OEMLogoBitmap: " & strOEMLogoBitmap strOEMStringArray = Join(objItem.OEMStringArray, ",") WScript.Echo "OEMStringArray: " & strOEMStringArray WScript.Echo "PartOfDomain: " & objItem.PartOfDomain WScript.Echo "PauseAfterReset: " & objItem.PauseAfterReset strPowerManagementCapabilities = Join(objItem.PowerManagementCapabilities, ",") WScript.Echo "PowerManagementCapabilities: " & strPowerManagementCapabilities WScript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported WScript.Echo "PowerOnPasswordStatus: " & objItem.PowerOnPasswordStatus WScript.Echo "PowerState: " & objItem.PowerState WScript.Echo "PowerSupplyState: " & objItem.PowerSupplyState WScript.Echo "PrimaryOwnerContact: " & objItem.PrimaryOwnerContact WScript.Echo "PrimaryOwnerName: " & objItem.PrimaryOwnerName WScript.Echo "ResetCapability: " & objItem.ResetCapability WScript.Echo "ResetCount: " & objItem.ResetCount WScript.Echo "ResetLimit: " & objItem.ResetLimit strRoles = Join(objItem.Roles, ",") WScript.Echo "Roles: " & strRoles WScript.Echo "Status: " & objItem.Status strSupportContactDescription = Join(objItem.SupportContactDescription, ",") WScript.Echo "SupportContactDescription: " & strSupportContactDescription WScript.Echo "SystemStartupDelay: " & objItem.SystemStartupDelay strSystemStartupOptions = Join(objItem.SystemStartupOptions, ",") WScript.Echo "SystemStartupOptions: " & strSystemStartupOptions WScript.Echo "SystemStartupSetting: " & objItem.SystemStartupSetting WScript.Echo "SystemType: " & objItem.SystemType WScript.Echo "ThermalState: " & objItem.ThermalState WScript.Echo "TotalPhysicalMemory: " & objItem.TotalPhysicalMemory WScript.Echo "UserName: " & objItem.UserName WScript.Echo "WakeUpType: " & objItem.WakeUpType WScript.Echo "Workgroup: " & objItem.Workgroup WScript.Echo Next Next Function WMIDateStringToDate(dtmDate) WScript.Echo dtm: WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _ Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _ & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2)) End Function
Wow I don't think I have gotten this many replys before on a forum, nice to finnaly find a good one. Scriptomatic it turning out to be a very usefull tool thank you all!
\root\CIMV2\Win32_NetworkAdapter don't have a sent/recv'd option for the connections. :(