Trong Posted December 12, 2024 Posted December 12, 2024 Get system information and Create reports in HTML and CSV format: expandcollapse popup;#NoTrayIcon ;Opt("MustDeclareVars", 1) Global $oMyError = ObjEvent("AutoIt.Error", "__PCinfo_ObjErrorFunc") Global Const $cI_CompName = @ComputerName, $sBlankMAC = "00:00:00:00:00:00", $ERR_NO_INFO = "Array contains no information", $ERR_NOT_OBJ = "$colItems isnt an object" Global $isWin64 = False, $softCount = 0, $sAdapterInfo If StringInStr(@OSArch, "64") Then $isWin64 = True Global $Report_SaveDir = @ScriptDir If Not __PCinfo_Singleton("PC_Scan_Info") Then Exit If Not FileExists($Report_SaveDir) Then DirCreate($Report_SaveDir) Global $sHTML_Content, $sFilePath_SaveHTML = $Report_SaveDir & "\" & @ComputerName & "_HTML.htm" Global $sLogs_Content, $sFilePath_SaveLog = $Report_SaveDir & "\" & @ComputerName & "_Csv.log" _Get_PCinformation() Func _Get_PCinformation() ToolTip('System Info Getting...', (@DesktopWidth / 2) - 20, 10) __PCinfo_HTML_AddHeader(@ComputerName & " System Information") Local $error, $extended, $sPC_Info $sPC_Info &= @CRLF Local $__PCinfo_Get_SysOverview = __PCinfo_Get_SysOverview() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_SysOverview') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_SysOverview') EndSwitch Else __Write_PCinfo($__PCinfo_Get_SysOverview, 'System_Overview', @ComputerName & ',System Infomation') EndIf Local $Network_Adapters = __PCinfo_Get_AdaptersInfo() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_AdaptersInfo') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_AdaptersInfo') EndSwitch Else __Write_PCinfo($Network_Adapters, 'Network_Adapters', 'Index,Network_Adapters,Name,Status,IPType,IP,SubNetIP,MAC,GetwayIP,MAC,Speed,DNS1,DNS2,DNS3,DNS4,DNS5,DNS6,DNS7,DNS8,DNS_Num') EndIf $sPC_Info &= @CRLF Local $Drives = __PCinfo_Get_Drives() If @error Then $error = @error $extended = @extended __PCinfo_DebugMsg("DriveGetDrive Error!", '__PCinfo_Get_Drives') Else __Write_PCinfo($Drives, 'Drives', 'Drive,DriveType,DriveStatus,FileSystem,Label,Serial,SpaceFree(GB),SpaceTotal(GB),DriveBusType,MapTo,IsSSD') EndIf $sPC_Info &= @CRLF Local $SystemProduct = __PCinfo_Get_SystemProduct() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_SystemProduct') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_SystemProduct') EndSwitch Else __Write_PCinfo($SystemProduct, 'SystemProduct', 'Name,IdentifyingNumber,SKUNumber,UUID,Description,Vendor,Version') EndIf $sPC_Info &= @CRLF Local $OSs = __PCinfo_Get_OSs() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_OSs') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_OSs') EndSwitch Else __Write_PCinfo($OSs, 'OS', 'Name,BootDevice,BuildNumber,BuildType,Description,CodeSet,CountryCode,CreationClassName,CSCreationClassName,CSDVersion,CSName,CurrentTimeZone,DataExecutionPrevention_32BitApplications,DataExecutionPrevention_Available,DataExecutionPrevention_Drivers,DataExecutionPrevention_SupportPolicy,Debug,Distributed,EncryptionLevel,ForegroundApplicationBoost,FreePhysicalMemory,FreeSpaceInPagingFiles,FreeVirtualMemory,InstALLDate,LargeSystemCache,LastBootUpTime,LocalDateTime,Locale,Manufacturer,MaxNumberOfProcesses,MaxProcessMemorySize,NumberOfLicensedUsers,NumberOfProcesses,NumberOfUsers,Organization,OSLanguage,OSProductSuite,OSType,OtherTypeDescription,PlusProductID,PlusVersionNumber,Primary,ProductType,QuantumLength,QuantumType,RegisteredUser,SerialNumber,ServicePackMajorVersion,ServicePackMinorVersion,SizeStoredInPagingFiles,Status,SuiteMask,SystemDevice,SystemDirectory,SystemDrive,TotalSwapSpaceSize,TotalVirtualMemorySize,TotalVisibleMemorySize,Version,WindowsDirectory') EndIf $sPC_Info &= @CRLF Local $Users = __PCinfo_Get_Users() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Users') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Users') EndSwitch Else __Write_PCinfo($Users, 'Users', 'Name,Domain,Status,LocalAccount,SID,SIDType,Description,FullName,Disabled,Lockout,PasswordChangeable,PasswordExpires,PasswordRequired,AccountType') EndIf $sPC_Info &= @CRLF Local $Groups = __PCinfo_Get_Groups() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Groups') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Groups') EndSwitch Else __Write_PCinfo($Groups, 'Groups', 'Name,Domain,Status,LocalAccount,SID,SIDType,Description') EndIf $sPC_Info &= @CRLF Local $sFilePath_SaveHTMLgedOnUser = __PCinfo_Get_LoggedOnUsers() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_LoggedOnUsers') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_LoggedOnUsers') EndSwitch Else __Write_PCinfo($sFilePath_SaveHTMLgedOnUser, 'Logged Users', 'DomainName,UserName,LogonID') EndIf Local $Desktop = __PCinfo_Get_Desktops() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Desktops') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Desktops') EndSwitch Else __Write_PCinfo($Desktop, 'Desktops', 'Name,BorderWidth,CoolSwitch,CursorBlinkRate,Description,DragFullWindows,GridGranularity,IconSpacing,IconTitleFaceName,IconTitleSize,IconTitleWrap,Pattern,ScreenSaverActive,ScreenSaverExecutable,ScreenSaverSecure,ScreenSaverTimeout,SettingID,WALLpaper,WALLpaperStretched,WALLpaperTiled') EndIf $sPC_Info &= @CRLF Local $Shares = __PCinfo_Get_Shares() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Shares') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Shares') EndSwitch Else __Write_PCinfo($Shares, 'Shares', 'Name,AccessMask,ALLowMaximum,MaximumALLowed,Description,Path,Status,Type') EndIf $sPC_Info &= @CRLF Local $Startup = __PCinfo_Get_Startup() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Startup') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Startup') EndSwitch Else __Write_PCinfo($Startup, 'Startup', 'Name,User,Location,Command,Description,SettingID') EndIf $sPC_Info &= @CRLF Local $System = __PCinfo_Get_System() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_System') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_System') EndSwitch Else __Write_PCinfo($System, 'System', 'Name,AdminPasswordStatus,AutomaticResetBootOption,AutomaticResetCapability,Description,BootOptionOnLimit,BootOptionOnWatchDog,BootROMSupported,BootupState,ChassisBootupState,CreationClassName,CurrentTimeZone,DaylightInEffect,Domain,DomainRole,EnableDaylightSavingsTime,FrontPanelResetStatus,InfraredSupported,InitiALLoadInfo,KeyboardPasswordStatus,LastLoadInfo,Manufacturer,Model,NameFormat,NetworkServerModeEnabled,NumberOfProcessors,OEMLogoBitmap,OEMStringArray,PartOfDomain,PauseAfterReset,PowerManagementCapabilities,PowerManagementSupported,PowerOnPasswordStatus,PowerState,PowerSupplyState,PrimaryOwnerContact,PrimaryOwnerName,ResetCapability,ResetCount,ResetLimit,Roles,Status,SupportContactDescription,SystemStartupDelay,SystemStartupOptions,SystemStartupSetting,SystemType,ThermalState,TotalPhysicalMemory,UserName,WakeUpType,Workgroup') EndIf $sPC_Info &= @CRLF Local $BIOS = __PCinfo_Get_BIOS() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_BIOS') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_BIOS') EndSwitch Else __Write_PCinfo($BIOS, 'BIOS', 'Name,Status,BIOSCharacteristics,BIOSVersion,Description,BuildNumber,CodeSet,CurrentLanguage,IdentificationCode,InstALLableLanguages,LanguageEdition,ListofLanguages,Manufacturer,OtherTargetOS,PrimaryBIOS,ReleaseDate,SerialNumber,SMBIOSBIOSVersion,SMBIOSMajorVersion,SMBIOSMinorVersion,SMBIOSPresent,SoftwareElementID,SoftwareElementState,TargetOperatingSystem,Version') EndIf $sPC_Info &= @CRLF Local $Keyboard = __PCinfo_Get_Keyboard() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Keyboard') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Keyboard') EndSwitch Else __Write_PCinfo($Keyboard, 'Keyboard', 'Name,Availability,ConfigManagerErrorCode,ConfigManagerUserConfig,Description,CreationClassName,DeviceID,ErrorCleared,ErrorDescription,IsLocked,LastErrorCode,Layout,NumberofFunctionKeys,Password,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,Status,StatusInfo,SystemCreationClassName,SystemName') EndIf $sPC_Info &= @CRLF Local $Memory = __PCinfo_Get_Memory() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Memory') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Memory') EndSwitch Else __Write_PCinfo($Memory, 'Memory', 'Name,BankLabel,Capacity,CreationClassName,Description,DataWidth,DeviceLocator,FormFactor,HotSwappable,InterleaveDataDepth,InterleavePosition,Manufacturer,MemoryType,Model,OtherIdentifyingInfo,PartNumber,PositionInRow,PoweredOn,Removable,Replaceable,SerialNumber,SKU,Speed,Status,Tag,TotalWidth,TypeDetail,Version') EndIf $sPC_Info &= @CRLF Local $Monitor = __PCinfo_Get_Monitors() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Monitors') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Monitors') EndSwitch Else __Write_PCinfo($Monitor, 'Monitor', 'Name,Availability,Bandwidth,ConfigManagerErrorCode,Description,ConfigManagerUserConfig,CreationClassName,DeviceID,DisplayType,ErrorCleared,ErrorDescription,IsLocked,LastErrorCode,MonitorManufacturer,MonitorType,PixelsPerXLogicalInch,PixelsPerYLogicalInch,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,ScreenHeight,ScreenWidth,Status,StatusInfo,SystemCreationClassName,SystemName') EndIf $sPC_Info &= @CRLF Local $Motherboard = __PCinfo_Get_Motherboard() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Motherboard') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Motherboard') EndSwitch Else __Write_PCinfo($Motherboard, 'Motherboard', 'Name,Availability,ConfigManagerErrorCode,ConfigManagerUserConfig,Description,CreationClassName,DeviceID,ErrorCleared,ErrorDescription,LastErrorCode,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,PrimaryBusType,RevisionNumber,SecondaryBusType,Status,StatusInfo,SystemCreationClassName,SystemName') EndIf $sPC_Info &= @CRLF Local $Mouse = __PCinfo_Get_Mouse() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Mouse') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Mouse') EndSwitch Else __Write_PCinfo($Mouse, 'Mouse', 'Name,Availability,ConfigManagerErrorCode,ConfigManagerUserConfig,Description,CreationClassName,DeviceID,DeviceInterface,DoubleSpeedThreshold,ErrorCleared,ErrorDescription,Handedness,HardwareType,InfFileName,InfSection,IsLocked,LastErrorCode,Manufacturer,NumberOfButtons,PNPDeviceID,PointingType,PowerManagementCapabilities,PowerManagementSupported,QuadSpeedThreshold,Resolution,SampleRate,Status,StatusInfo,Synch,SystemCreationClassName,SystemName') EndIf $sPC_Info &= @CRLF Local $NetworkCards = __PCinfo_Get_NetworkCards() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_NetworkCards') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_NetworkCards') EndSwitch Else __Write_PCinfo($NetworkCards, 'NetworkCards', 'Name,AdapterType,AdapterTypeID,AutoSense,Description,Availability,ConfigManagerErrorCode,ConfigManagerUserConfig,CreationClassName,DeviceID,ErrorCleared,ErrorDescription,Index,InstALLed,LastErrorCode,MACAddress,Manufacturer,MaxNumberControlled,MaxSpeed,NetConnectionID,NetConnectionStatus,NetworkAddresses,PermanentAddress,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,ProductName,ServiceName,Speed,Status,StatusInfo,SystemCreationClassName,SystemName,TimeOfLastReset') EndIf $sPC_Info &= @CRLF Local $Print = __PCinfo_Get_Printers() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Printers') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Printers') EndSwitch Else __Write_PCinfo($Print, 'Print', 'Name,Attributes,Availability,AvailableJobSheets,Description,AveragePagesPerMinute,Capabilities,CapabilityDescriptions,CharSetsSupported,Comment,ConfigManagerErrorCode,ConfigManagerUserConfig,CreationClassName,CurrentCapabilities,CurrentCharSet,CurrentLanguage,CurrentMimeType,CurrentNaturALLanguage,CurrentPaperType,Default,DefaultCapabilities,DefaultCopies,DefaultLanguage,DefaultMimeType,DefaultNumberUp,DefaultPaperType,DefaultPriority,DetectedErrorState,DeviceID,Direct,DoCompleteFirst,DriverName,EnableBIDI,EnableDevQueryPrint,ErrorCleared,ErrorDescription,ErrorInformation,ExtendedDetectedErrorState,ExtendedPrinttatus,Hidden,HorizontalResolution,JobCountSinceLastReset,KeepPrintedJobs,LanguagesSupported,LastErrorCode,Local,Location,MarkingTechnology,MaxCopies,MaxNumberUp,MaxSizeSupported,MimeTypesSupported,NaturALLanguagesSupported,Network,PaperSizesSupported,PaperTypesAvailable,Parameters,PNPDeviceID,PortName,PowerManagementCapabilities,PowerManagementSupported,PrinterPaperNames,Printtate,Printtatus,PrintJobDataType,PrintProcessor,Priority,Published,Queued,RawOnly,SeparatorFile,ServerName,Shared,ShareName,SpoolEnabled,Status,StatusInfo,SystemCreationClassName,SystemName,VerticalResolution,WorkOffline') EndIf $sPC_Info &= @CRLF Local $Processors = __PCinfo_Get_Processors() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Processors') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Processors') EndSwitch Else __Write_PCinfo($Processors, 'Processors', 'Name,AddressWidth,Architecture,Availability,Description,ConfigManagerErrorCode,ConfigManagerUserConfig,CPUStatus,CreationClassName,CurrentClockSpeed,CurrentVoltage,DataWidth,DeviceID,ErrorCleared,ErrorDescription,ExtClock,Family,L2CacheSize,L2CacheSpeed,LastErrorCode,Level,LoadPercentage,Manufacturer,MaxClockSpeed,OtherFamilyDescription,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,ProcessorID,ProcessorType,Revision,Role,SocketDesignation,Status,StatusInfo,Stepping,SystemCreationClassName,SystemName,UniqueID,UpgradeMethod,Version,VoltageCaps') EndIf $sPC_Info &= @CRLF Local $SoundCards = __PCinfo_Get_SoundCards() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_SoundCards') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_SoundCards') EndSwitch Else __Write_PCinfo($SoundCards, 'SoundCards', 'Name,Availability,ConfigManagerErrorCode,ConfigManagerUserConfig,Description,CreationClassName,DeviceID,DMABufferSize,ErrorCleared,ErrorDescription,LastErrorCode,Manufacturer,MPU401Address,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,ProductName,Status,StatusInfo,SystemCreationClassName,SystemName') EndIf $sPC_Info &= @CRLF Local $VideoCards = __PCinfo_Get_VideoCards() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_VideoCards') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_VideoCards') EndSwitch Else __Write_PCinfo($VideoCards, 'VideoCards', 'Name,AcceleratorCapabilities,AdapterCompatibility,AdapterDACType,Description,AdapterRAM,Availability,CapabilityDescriptions,ColorTableEntries,ConfigManagerErrorCode,ConfigManagerUserConfig,CreationClassName,CurrentBitsPerPixel,CurrentHorizontalResolution,CurrentNumberOfColors,CurrentNumberOfColumns,CurrentNumberOfRows,CurrentRefreshRate,CurrentScanMode,CurrentVerticalResolution,DeviceID,DeviceSpecificPens,DitherType,DriverDate,DriverVersion,ErrorCleared,ErrorDescription,ICMIntent,ICMMethod,InfFilename,InfSection,InstALLedDisplayDrivers,LastErrorCode,MaxMemorySupported,MaxNumberControlled,MaxRefreshRate,MinRefreshRate,Monochrome,NumberOfColorPlanes,NumberOfVideoPages,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,ProtocolSupported,ReservedSystemPaletteEntries,SpecificationVersion,Status,StatusInfo,SystemCreationClassName,SystemName,SystemPaletteEntries,TimeOfLastReset,VideoArchitecture,VideoMemoryType,VideoMode,VideoModeDescription,VideoProcessor') EndIf $sPC_Info &= @CRLF Local $Software = __PCinfo_Get_Software() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Software') EndSwitch Else __Write_PCinfo($Software, 'Software', 'DisplayName,DisplayVersion,Publisher,InstALLDate,EstimatedSize,NoElevateOnModify,NoModify,NoRemove,NoRepair,InstALLLocation,UninstALLString') EndIf $sPC_Info &= @CRLF Local $Services = __PCinfo_Get_Services("ALL") If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Services') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Services') EndSwitch Else __Write_PCinfo($Services, 'Services', 'Name,State,Status,AcceptPause,AcceptStop,CheckPoint,CreationClassName,DesktopInteract,DisplayName,ErrorControl,ExitCode,PathName,ProcessId,ServiceSpecificExitCode,ServiceType,Started,StartMode,StartName,SystemCreationClassName,SystemName,TagId,WaitHint,Descriptiont') EndIf $sPC_Info &= @CRLF Local $Battery = __PCinfo_Get_Battery() If @error Then $error = @error $extended = @extended Switch $extended Case 1 __PCinfo_DebugMsg($ERR_NO_INFO, '__PCinfo_Get_Battery') Case 2 __PCinfo_DebugMsg($ERR_NOT_OBJ, '__PCinfo_Get_Battery') EndSwitch Else __Write_PCinfo($Battery, 'Battery', 'Name,Availability,BatteryRechargeTime,BatteryStatus,Description,Chemistry,ConfigManagerErrorCode,ConfigManagerUserConfig,CreationClassName,DesignCapacity,DesignVoltage,DeviceID,ErrorCleared,ErrorDescription,EstimatedChargeRemaining,EstimatedRunTime,ExpectedBatteryLife,ExpectedLife,FullChargeCapacity,LastErrorCode,MaxRechargeTime,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,SmartBatteryVersion,Status,StatusInfo,SystemCreationClassName,SystemName,TimeOnBattery,TimeToFullCharge') EndIf __PCinfo_HTML_AddFooter() Global $hO_HTML = FileOpen($sFilePath_SaveHTML, 2 + 8 + 128) FileWrite($hO_HTML, $sHTML_Content) FileClose($hO_HTML) ShellExecute($sFilePath_SaveHTML) Global $hO_Logs = FileOpen($sFilePath_SaveLog, 2 + 8 + 128) FileWrite($hO_Logs, $sLogs_Content) FileClose($hO_Logs) ShellExecute($sFilePath_SaveLog) ToolTip('') Return $sPC_Info EndFunc ;==>_Get_PCinformation Func __Write_PCinfo(ByRef $iArray, $sTitle, $iHeader) __PCinfo_Write_Array2HTML($iArray, $sTitle, $iHeader) __PCinfo_Write_Array2CSVlog($iArray, $sTitle, $iHeader) EndFunc ;==>__Write_PCinfo Func __PCinfo_DebugMsg($message, $time = 0) ConsoleWrite("! Error: " & $message & ' - Time: ' & $time & @CRLF) EndFunc ;==>__PCinfo_DebugMsg Func __PCinfo_Get_Drives($sDriveType = "ALL") Local $cDrive Local $aArray = DriveGetDrive($sDriveType) If @error Then Return Else Dim $aDriveInfo[UBound($aArray)][11] $aDriveInfo[0][0] = $aArray[0] For $i = 1 To $aArray[0] $cDrive = StringUpper($aArray[$i]) $aDriveInfo[$i][0] = $cDrive & '\' $sDriveType = DriveGetType($cDrive) $aDriveInfo[$i][1] = $sDriveType $aDriveInfo[$i][2] = DriveStatus($cDrive) $aDriveInfo[$i][3] = DriveGetFileSystem($cDrive) $aDriveInfo[$i][4] = DriveGetLabel($cDrive) $aDriveInfo[$i][5] = DriveGetSerial($cDrive) $aDriveInfo[$i][6] = Round(DriveSpaceFree($cDrive) / 1024, 2) $aDriveInfo[$i][7] = Round(DriveSpaceTotal($cDrive) / 1024, 2) $aDriveInfo[$i][8] = DriveGetType($cDrive, 3) Switch $sDriveType Case "Network" $aDriveInfo[$i][9] = DriveMapGet($cDrive) $aDriveInfo[$i][8] = 'SMB' Case "Fixed" $aDriveInfo[$i][10] = (StringUpper(DriveGetType($cDrive, 2)) == 'SSD') ? True : False EndSwitch $sDriveType = '' Next Return $aDriveInfo EndIf Return SetError(1, 0, 0) EndFunc ;==>__PCinfo_Get_Drives Func __PCinfo_Get_Desktops() Local $colItems, $objWMIService, $objItem Dim $aDesktopInfo[1][20], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Desktop", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aDesktopInfo[UBound($aDesktopInfo) + 1][20] $aDesktopInfo[$i][0] = $objItem.Name $aDesktopInfo[$i][1] = $objItem.BorderWidth $aDesktopInfo[$i][2] = $objItem.CoolSwitch $aDesktopInfo[$i][3] = $objItem.CursorBlinkRate $aDesktopInfo[$i][4] = $objItem.Description $aDesktopInfo[$i][5] = $objItem.DragFullWindows $aDesktopInfo[$i][6] = $objItem.GridGranularity $aDesktopInfo[$i][7] = $objItem.IconSpacing $aDesktopInfo[$i][8] = $objItem.IconTitleFaceName $aDesktopInfo[$i][9] = $objItem.IconTitleSize $aDesktopInfo[$i][10] = $objItem.IconTitleWrap $aDesktopInfo[$i][11] = $objItem.Pattern $aDesktopInfo[$i][12] = $objItem.ScreenSaverActive $aDesktopInfo[$i][13] = $objItem.ScreenSaverExecutable $aDesktopInfo[$i][14] = $objItem.ScreenSaverSecure $aDesktopInfo[$i][15] = $objItem.ScreenSaverTimeout $aDesktopInfo[$i][16] = $objItem.SettingID $aDesktopInfo[$i][17] = $objItem.WALLpaper $aDesktopInfo[$i][18] = $objItem.WALLpaperStretched $aDesktopInfo[$i][19] = $objItem.WALLpaperTiled $i += 1 Next $aDesktopInfo[0][0] = UBound($aDesktopInfo) - 1 If $aDesktopInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aDesktopInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Desktops Func __PCinfo_Get_Groups() Local $colItems, $objWMIService, $objItem Dim $aGroupInfo[1][7], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Group", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aGroupInfo[UBound($aGroupInfo) + 1][7] $aGroupInfo[$i][0] = $objItem.Name $aGroupInfo[$i][1] = $objItem.Domain $aGroupInfo[$i][2] = $objItem.Status $aGroupInfo[$i][3] = $objItem.LocalAccount $aGroupInfo[$i][4] = $objItem.Description $aGroupInfo[$i][5] = $objItem.SID $aGroupInfo[$i][6] = $objItem.SIDType $i += 1 Next $aGroupInfo[0][0] = UBound($aGroupInfo) - 1 If $aGroupInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aGroupInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Groups Func __PCinfo_Get_LoggedOnUsers() Local $colItems, $objWMIService, $objItem Local $sFilePath_SaveHTMLgedOnUserInfo, $linePattern, $aExpRet Dim $aLoggedOnUserInfo[1][3], $i = 1 $linePattern = '(?i)(?:=")([^"]*)' $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_LoggedOnUser", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems $sFilePath_SaveHTMLgedOnUserInfo &= $objItem.Antecedent $sFilePath_SaveHTMLgedOnUserInfo &= $objItem.Dependent Next $aExpRet = StringRegExp($sFilePath_SaveHTMLgedOnUserInfo, $linePattern, 3) ReDim $aLoggedOnUserInfo[UBound($aExpRet) / 3 + 1][3] Local $j = 0 For $i = 1 To UBound($aLoggedOnUserInfo) - 1 Step 1 $aLoggedOnUserInfo[$i][0] = $aExpRet[$j] $aLoggedOnUserInfo[$i][1] = $aExpRet[$j + 1] $aLoggedOnUserInfo[$i][2] = $aExpRet[$j + 2] $j += 3 Next $aLoggedOnUserInfo[0][0] = UBound($aLoggedOnUserInfo) - 1 If $aLoggedOnUserInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aLoggedOnUserInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_LoggedOnUsers Func __PCinfo_Get_OSs() Local $colItems, $objWMIService, $objItem Dim $aOSInfo[1][60], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aOSInfo[UBound($aOSInfo) + 1][60] $aOSInfo[$i][0] = $objItem.Name $aOSInfo[$i][1] = $objItem.BootDevice $aOSInfo[$i][2] = $objItem.BuildNumber $aOSInfo[$i][3] = $objItem.BuildType $aOSInfo[$i][4] = $objItem.Description $aOSInfo[$i][5] = $objItem.CodeSet $aOSInfo[$i][6] = $objItem.CountryCode $aOSInfo[$i][7] = $objItem.CreationClassName $aOSInfo[$i][8] = $objItem.CSCreationClassName $aOSInfo[$i][9] = $objItem.CSDVersion $aOSInfo[$i][10] = $objItem.CSName $aOSInfo[$i][11] = $objItem.CurrentTimeZone $aOSInfo[$i][12] = $objItem.DataExecutionPrevention_32BitApplications $aOSInfo[$i][13] = $objItem.DataExecutionPrevention_Available $aOSInfo[$i][14] = $objItem.DataExecutionPrevention_Drivers $aOSInfo[$i][15] = $objItem.DataExecutionPrevention_SupportPolicy $aOSInfo[$i][16] = $objItem.Debug $aOSInfo[$i][17] = $objItem.Distributed $aOSInfo[$i][18] = $objItem.EncryptionLevel $aOSInfo[$i][19] = $objItem.ForegroundApplicationBoost $aOSInfo[$i][20] = $objItem.FreePhysicalMemory $aOSInfo[$i][21] = $objItem.FreeSpaceInPagingFiles $aOSInfo[$i][22] = $objItem.FreeVirtualMemory $aOSInfo[$i][23] = __StringToDate($objItem.InstALLDate) $aOSInfo[$i][24] = $objItem.LargeSystemCache $aOSInfo[$i][25] = __StringToDate($objItem.LastBootUpTime) $aOSInfo[$i][26] = __StringToDate($objItem.LocalDateTime) $aOSInfo[$i][27] = $objItem.Locale $aOSInfo[$i][28] = $objItem.Manufacturer $aOSInfo[$i][29] = $objItem.MaxNumberOfProcesses $aOSInfo[$i][30] = $objItem.MaxProcessMemorySize $aOSInfo[$i][31] = $objItem.NumberOfLicensedUsers $aOSInfo[$i][32] = $objItem.NumberOfProcesses $aOSInfo[$i][33] = $objItem.NumberOfUsers $aOSInfo[$i][34] = $objItem.Organization $aOSInfo[$i][35] = $objItem.OSLanguage $aOSInfo[$i][36] = $objItem.OSProductSuite $aOSInfo[$i][37] = $objItem.OSType $aOSInfo[$i][38] = $objItem.OtherTypeDescription $aOSInfo[$i][39] = $objItem.PlusProductID $aOSInfo[$i][40] = $objItem.PlusVersionNumber $aOSInfo[$i][41] = $objItem.Primary $aOSInfo[$i][42] = $objItem.ProductType $aOSInfo[$i][45] = $objItem.RegisteredUser $aOSInfo[$i][46] = $objItem.SerialNumber $aOSInfo[$i][47] = $objItem.ServicePackMajorVersion $aOSInfo[$i][48] = $objItem.ServicePackMinorVersion $aOSInfo[$i][49] = $objItem.SizeStoredInPagingFiles $aOSInfo[$i][50] = $objItem.Status $aOSInfo[$i][51] = $objItem.SuiteMask $aOSInfo[$i][52] = $objItem.SystemDevice $aOSInfo[$i][53] = $objItem.SystemDirectory $aOSInfo[$i][54] = $objItem.SystemDrive $aOSInfo[$i][55] = $objItem.TotalSwapSpaceSize $aOSInfo[$i][56] = $objItem.TotalVirtualMemorySize $aOSInfo[$i][57] = $objItem.TotalVisibleMemorySize $aOSInfo[$i][58] = $objItem.Version $aOSInfo[$i][59] = $objItem.WindowsDirectory $i += 1 Next $aOSInfo[0][0] = UBound($aOSInfo) - 1 If $aOSInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aOSInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_OSs Func __PCinfo_Get_Services($sState = "ALL") Local $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20 Local $colItems, $objWMIService, $objItem Dim $aServicesInfo[1][23], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Service", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems If $sState <> "ALL" Then If $sState = "Stopped" And $objItem.State <> "Stopped" Then ContinueLoop If $sState = "Running" And $objItem.State <> "Running" Then ContinueLoop EndIf ReDim $aServicesInfo[UBound($aServicesInfo) + 1][23] $aServicesInfo[$i][0] = $objItem.Name $aServicesInfo[$i][1] = $objItem.State $aServicesInfo[$i][2] = $objItem.Status $aServicesInfo[$i][3] = $objItem.AcceptPause $aServicesInfo[$i][4] = $objItem.AcceptStop $aServicesInfo[$i][5] = $objItem.CheckPoint $aServicesInfo[$i][6] = $objItem.CreationClassName $aServicesInfo[$i][7] = $objItem.DesktopInteract $aServicesInfo[$i][8] = $objItem.DisplayName $aServicesInfo[$i][9] = $objItem.ErrorControl $aServicesInfo[$i][10] = $objItem.ExitCode $aServicesInfo[$i][11] = $objItem.PathName $aServicesInfo[$i][12] = $objItem.ProcessId $aServicesInfo[$i][13] = $objItem.ServiceSpecificExitCode $aServicesInfo[$i][14] = $objItem.ServiceType $aServicesInfo[$i][15] = $objItem.Started $aServicesInfo[$i][16] = $objItem.StartMode $aServicesInfo[$i][17] = $objItem.StartName $aServicesInfo[$i][18] = $objItem.SystemCreationClassName $aServicesInfo[$i][19] = $objItem.SystemName $aServicesInfo[$i][20] = $objItem.TagId $aServicesInfo[$i][21] = $objItem.WaitHint $aServicesInfo[$i][22] = $objItem.Description $i += 1 Next $aServicesInfo[0][0] = UBound($aServicesInfo) - 1 If $aServicesInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aServicesInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Services Func __PCinfo_Get_Shares() Local $colItems, $objWMIService, $objItem Dim $aShareInfo[1][8], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Share", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aShareInfo[UBound($aShareInfo) + 1][8] $aShareInfo[$i][0] = $objItem.Name $aShareInfo[$i][1] = $objItem.AccessMask $aShareInfo[$i][2] = $objItem.ALLowMaximum $aShareInfo[$i][3] = $objItem.MaximumALLowed $aShareInfo[$i][4] = $objItem.Description $aShareInfo[$i][5] = $objItem.Path $aShareInfo[$i][6] = $objItem.Status $aShareInfo[$i][7] = $objItem.Type $i += 1 Next $aShareInfo[0][0] = UBound($aShareInfo) - 1 If $aShareInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aShareInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Shares Func __PCinfo_Get_Software() Local Const $UnInstKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstALL" Local $i = 1, $SoftName, $Count = 1, $AppKey Dim $aSoftwareInfo[1][11] While 1 $AppKey = RegEnumKey($UnInstKey, $i) If @error <> 0 Then ExitLoop $SoftName = StringStripWS(StringReplace(RegRead($UnInstKey & "\" & $AppKey, "DisplayName"), "(remove only)", ""), 3) $i += 1 If ($SoftName == '') Then ContinueLoop ReDim $aSoftwareInfo[UBound($aSoftwareInfo) + 1][11] $aSoftwareInfo[$Count][0] = $SoftName $aSoftwareInfo[$Count][1] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "DisplayVersion"), 3) $aSoftwareInfo[$Count][2] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "Publisher"), 3) $aSoftwareInfo[$Count][3] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "InstALLDate"), 3) $aSoftwareInfo[$Count][4] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "EstimatedSize"), 3) $aSoftwareInfo[$Count][5] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "NoElevateOnModify"), 3) $aSoftwareInfo[$Count][6] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "NoModify"), 3) $aSoftwareInfo[$Count][7] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "NoRemove"), 3) $aSoftwareInfo[$Count][8] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "NoRepair"), 3) $aSoftwareInfo[$Count][9] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "InstALLLocation"), 3) $aSoftwareInfo[$Count][10] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "UninstALLString"), 3) $Count += 1 $AppKey = '' $SoftName = '' WEnd $aSoftwareInfo[0][0] = UBound($aSoftwareInfo, 1) - 1 If $aSoftwareInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aSoftwareInfo EndFunc ;==>__PCinfo_Get_Software Func __PCinfo_Get_Startup() Local $colItems, $objWMIService, $objItem Dim $aStartupInfo[1][6], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_StartupCommand", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aStartupInfo[UBound($aStartupInfo) + 1][6] $aStartupInfo[$i][0] = $objItem.Name $aStartupInfo[$i][1] = $objItem.User $aStartupInfo[$i][2] = $objItem.Location $aStartupInfo[$i][3] = $objItem.Command $aStartupInfo[$i][4] = $objItem.Description $aStartupInfo[$i][5] = $objItem.SettingID $i += 1 Next $aStartupInfo[0][0] = UBound($aStartupInfo) - 1 If $aStartupInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aStartupInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Startup Func __PCinfo_Get_Users() Local $colItems, $objWMIService, $objItem Dim $aUserInfo[1][14], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aUserInfo[UBound($aUserInfo) + 1][14] $aUserInfo[$i][0] = $objItem.Name $aUserInfo[$i][1] = $objItem.Domain $aUserInfo[$i][2] = $objItem.Status $aUserInfo[$i][3] = $objItem.LocalAccount $aUserInfo[$i][4] = $objItem.Description $aUserInfo[$i][5] = $objItem.SIDType $aUserInfo[$i][6] = $objItem.SID $aUserInfo[$i][7] = $objItem.FullName $aUserInfo[$i][8] = $objItem.Disabled $aUserInfo[$i][9] = $objItem.Lockout $aUserInfo[$i][10] = $objItem.PasswordChangeable $aUserInfo[$i][11] = $objItem.PasswordExpires $aUserInfo[$i][12] = $objItem.PasswordRequired $aUserInfo[$i][13] = $objItem.AccountType $i += 1 Next $aUserInfo[0][0] = UBound($aUserInfo) - 1 If $aUserInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aUserInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Users Func __PCinfo_Get_Battery() Local $colItems, $objWMIService, $objItem Dim $aBatteryInfo[1][31], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Battery", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aBatteryInfo[UBound($aBatteryInfo) + 1][31] $aBatteryInfo[$i][0] = $objItem.Name $aBatteryInfo[$i][1] = $objItem.Availability $aBatteryInfo[$i][2] = $objItem.BatteryRechargeTime $aBatteryInfo[$i][3] = $objItem.BatteryStatus $aBatteryInfo[$i][4] = $objItem.Description $aBatteryInfo[$i][5] = $objItem.Chemistry $aBatteryInfo[$i][6] = $objItem.ConfigManagerErrorCode $aBatteryInfo[$i][7] = $objItem.ConfigManagerUserConfig $aBatteryInfo[$i][8] = $objItem.CreationClassName $aBatteryInfo[$i][9] = $objItem.DesignCapacity $aBatteryInfo[$i][10] = $objItem.DesignVoltage $aBatteryInfo[$i][11] = $objItem.DeviceID $aBatteryInfo[$i][12] = $objItem.ErrorCleared $aBatteryInfo[$i][13] = $objItem.ErrorDescription $aBatteryInfo[$i][14] = $objItem.EstimatedChargeRemaining $aBatteryInfo[$i][15] = $objItem.EstimatedRunTime $aBatteryInfo[$i][16] = $objItem.ExpectedBatteryLife $aBatteryInfo[$i][17] = $objItem.ExpectedLife $aBatteryInfo[$i][18] = $objItem.FullChargeCapacity $aBatteryInfo[$i][19] = $objItem.LastErrorCode $aBatteryInfo[$i][20] = $objItem.MaxRechargeTime $aBatteryInfo[$i][21] = $objItem.PNPDeviceID $aBatteryInfo[$i][22] = $objItem.PowerManagementCapabilities(0) $aBatteryInfo[$i][23] = $objItem.PowerManagementSupported $aBatteryInfo[$i][24] = $objItem.SmartBatteryVersion $aBatteryInfo[$i][25] = $objItem.Status $aBatteryInfo[$i][26] = $objItem.StatusInfo $aBatteryInfo[$i][27] = $objItem.SystemCreationClassName $aBatteryInfo[$i][28] = $objItem.SystemName $aBatteryInfo[$i][29] = $objItem.TimeOnBattery $aBatteryInfo[$i][30] = $objItem.TimeToFullCharge $i += 1 Next $aBatteryInfo[0][0] = UBound($aBatteryInfo) - 1 If $aBatteryInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aBatteryInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Battery Func __PCinfo_Get_BIOS() Local $colItems, $objWMIService, $objItem Dim $aBIOSInfo[1][25], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aBIOSInfo[UBound($aBIOSInfo) + 1][25] $aBIOSInfo[$i][0] = $objItem.Name $aBIOSInfo[$i][1] = $objItem.Status $aBIOSInfo[$i][2] = $objItem.BiosCharacteristics(0) $aBIOSInfo[$i][3] = $objItem.BIOSVersion(0) $aBIOSInfo[$i][4] = $objItem.Description $aBIOSInfo[$i][5] = $objItem.BuildNumber $aBIOSInfo[$i][6] = $objItem.CodeSet $aBIOSInfo[$i][7] = $objItem.CurrentLanguage $aBIOSInfo[$i][8] = $objItem.IdentificationCode $aBIOSInfo[$i][9] = $objItem.InstALLableLanguages $aBIOSInfo[$i][10] = $objItem.LanguageEdition $aBIOSInfo[$i][11] = $objItem.ListOfLanguages(0) $aBIOSInfo[$i][12] = $objItem.Manufacturer $aBIOSInfo[$i][13] = $objItem.OtherTargetOS $aBIOSInfo[$i][14] = $objItem.PrimaryBIOS $aBIOSInfo[$i][15] = __StringToDate($objItem.ReleaseDate) $aBIOSInfo[$i][16] = $objItem.SerialNumber $aBIOSInfo[$i][17] = $objItem.SMBIOSBIOSVersion $aBIOSInfo[$i][18] = $objItem.SMBIOSMajorVersion $aBIOSInfo[$i][19] = $objItem.SMBIOSMinorVersion $aBIOSInfo[$i][20] = $objItem.SMBIOSPresent $aBIOSInfo[$i][21] = $objItem.SoftwareElementID $aBIOSInfo[$i][22] = $objItem.SoftwareElementState $aBIOSInfo[$i][23] = $objItem.TargetOperatingSystem $aBIOSInfo[$i][24] = $objItem.Version $i += 1 Next $aBIOSInfo[0][0] = UBound($aBIOSInfo) - 1 If $aBIOSInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aBIOSInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_BIOS Func __PCinfo_Get_Keyboard() Local $colItems, $objWMIService, $objItem Dim $aKeyboardInfo[1][21], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Keyboard", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aKeyboardInfo[UBound($aKeyboardInfo) + 1][21] $aKeyboardInfo[$i][0] = $objItem.Name $aKeyboardInfo[$i][1] = $objItem.Availability $aKeyboardInfo[$i][2] = $objItem.ConfigManagerErrorCode $aKeyboardInfo[$i][3] = $objItem.ConfigManagerUserConfig $aKeyboardInfo[$i][4] = $objItem.Description $aKeyboardInfo[$i][5] = $objItem.CreationClassName $aKeyboardInfo[$i][6] = $objItem.DeviceID $aKeyboardInfo[$i][7] = $objItem.ErrorCleared $aKeyboardInfo[$i][8] = $objItem.ErrorDescription $aKeyboardInfo[$i][9] = $objItem.IsLocked $aKeyboardInfo[$i][10] = $objItem.LastErrorCode $aKeyboardInfo[$i][11] = $objItem.Layout $aKeyboardInfo[$i][12] = $objItem.NumberOfFunctionKeys $aKeyboardInfo[$i][13] = $objItem.Password $aKeyboardInfo[$i][14] = $objItem.PNPDeviceID $aKeyboardInfo[$i][15] = $objItem.PowerManagementCapabilities(0) $aKeyboardInfo[$i][16] = $objItem.PowerManagementSupported $aKeyboardInfo[$i][17] = $objItem.Status $aKeyboardInfo[$i][18] = $objItem.StatusInfo $aKeyboardInfo[$i][19] = $objItem.SystemCreationClassName $aKeyboardInfo[$i][20] = $objItem.SystemName $i += 1 Next $aKeyboardInfo[0][0] = UBound($aKeyboardInfo) - 1 If $aKeyboardInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aKeyboardInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Keyboard Func __PCinfo_Get_Memory() Local $colItems, $objWMIService, $objItem Dim $aMemoryInfo[1][28], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aMemoryInfo[UBound($aMemoryInfo) + 1][28] $aMemoryInfo[$i][0] = $objItem.Name $aMemoryInfo[$i][1] = $objItem.BankLabel $aMemoryInfo[$i][2] = $objItem.Capacity $aMemoryInfo[$i][3] = $objItem.CreationClassName $aMemoryInfo[$i][4] = $objItem.Description $aMemoryInfo[$i][5] = $objItem.DataWidth $aMemoryInfo[$i][6] = $objItem.DeviceLocator $aMemoryInfo[$i][7] = $objItem.FormFactor $aMemoryInfo[$i][8] = $objItem.HotSwappable $aMemoryInfo[$i][9] = $objItem.InterleaveDataDepth $aMemoryInfo[$i][10] = $objItem.InterleavePosition $aMemoryInfo[$i][11] = $objItem.Manufacturer $aMemoryInfo[$i][12] = $objItem.MemoryType $aMemoryInfo[$i][13] = $objItem.Model $aMemoryInfo[$i][14] = $objItem.OtherIdentifyingInfo $aMemoryInfo[$i][15] = $objItem.PartNumber $aMemoryInfo[$i][16] = $objItem.PositionInRow $aMemoryInfo[$i][17] = $objItem.PoweredOn $aMemoryInfo[$i][18] = $objItem.Removable $aMemoryInfo[$i][19] = $objItem.Replaceable $aMemoryInfo[$i][20] = $objItem.SerialNumber $aMemoryInfo[$i][21] = $objItem.SKU $aMemoryInfo[$i][22] = $objItem.Speed $aMemoryInfo[$i][23] = $objItem.Status $aMemoryInfo[$i][24] = $objItem.Tag $aMemoryInfo[$i][25] = $objItem.TotalWidth $aMemoryInfo[$i][26] = $objItem.TypeDetail $aMemoryInfo[$i][27] = $objItem.Version $i += 1 Next $aMemoryInfo[0][0] = UBound($aMemoryInfo) - 1 If $aMemoryInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aMemoryInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Memory Func __PCinfo_Get_Monitors() Local $colItems, $objWMIService, $objItem Dim $aMonitorInfo[1][26], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DesktopMonitor", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aMonitorInfo[UBound($aMonitorInfo) + 1][26] $aMonitorInfo[$i][0] = $objItem.Name $aMonitorInfo[$i][1] = $objItem.Availability $aMonitorInfo[$i][2] = $objItem.Bandwidth $aMonitorInfo[$i][3] = $objItem.ConfigManagerErrorCode $aMonitorInfo[$i][4] = $objItem.Description $aMonitorInfo[$i][5] = $objItem.ConfigManagerUserConfig $aMonitorInfo[$i][6] = $objItem.CreationClassName $aMonitorInfo[$i][7] = $objItem.DeviceID $aMonitorInfo[$i][8] = $objItem.DisplayType $aMonitorInfo[$i][9] = $objItem.ErrorCleared $aMonitorInfo[$i][10] = $objItem.ErrorDescription $aMonitorInfo[$i][11] = $objItem.IsLocked $aMonitorInfo[$i][12] = $objItem.LastErrorCode $aMonitorInfo[$i][13] = $objItem.MonitorManufacturer $aMonitorInfo[$i][14] = $objItem.MonitorType $aMonitorInfo[$i][15] = $objItem.PixelsPerXLogicalInch $aMonitorInfo[$i][16] = $objItem.PixelsPerYLogicalInch $aMonitorInfo[$i][17] = $objItem.PNPDeviceID $aMonitorInfo[$i][18] = $objItem.PowerManagementCapabilities(0) $aMonitorInfo[$i][19] = $objItem.PowerManagementSupported $aMonitorInfo[$i][20] = $objItem.ScreenHeight $aMonitorInfo[$i][21] = $objItem.ScreenWidth $aMonitorInfo[$i][22] = $objItem.Status $aMonitorInfo[$i][23] = $objItem.StatusInfo $aMonitorInfo[$i][24] = $objItem.SystemCreationClassName $aMonitorInfo[$i][25] = $objItem.SystemName $i += 1 Next $aMonitorInfo[0][0] = UBound($aMonitorInfo) - 1 If $aMonitorInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aMonitorInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Monitors Func __PCinfo_Get_Motherboard() Local $colItems, $objWMIService, $objItem Dim $aMotherboardInfo[1][20], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_MotherboardDevice", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aMotherboardInfo[UBound($aMotherboardInfo) + 1][20] $aMotherboardInfo[$i][0] = $objItem.Name $aMotherboardInfo[$i][1] = $objItem.Availability $aMotherboardInfo[$i][2] = $objItem.ConfigManagerErrorCode $aMotherboardInfo[$i][3] = $objItem.ConfigManagerUserConfig $aMotherboardInfo[$i][4] = $objItem.Description $aMotherboardInfo[$i][5] = $objItem.CreationClassName $aMotherboardInfo[$i][6] = $objItem.DeviceID $aMotherboardInfo[$i][7] = $objItem.ErrorCleared $aMotherboardInfo[$i][8] = $objItem.ErrorDescription $aMotherboardInfo[$i][9] = $objItem.LastErrorCode $aMotherboardInfo[$i][10] = $objItem.PNPDeviceID $aMotherboardInfo[$i][11] = $objItem.PowerManagementCapabilities(0) $aMotherboardInfo[$i][12] = $objItem.PowerManagementSupported $aMotherboardInfo[$i][13] = $objItem.PrimaryBusType $aMotherboardInfo[$i][14] = $objItem.RevisionNumber $aMotherboardInfo[$i][15] = $objItem.SecondaryBusType $aMotherboardInfo[$i][16] = $objItem.Status $aMotherboardInfo[$i][17] = $objItem.StatusInfo $aMotherboardInfo[$i][18] = $objItem.SystemCreationClassName $aMotherboardInfo[$i][19] = $objItem.SystemName $i += 1 Next $aMotherboardInfo[0][0] = UBound($aMotherboardInfo) - 1 If $aMotherboardInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aMotherboardInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Motherboard Func __PCinfo_Get_Mouse() Local $colItems, $objWMIService, $objItem Dim $aMouseInfo[1][31], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PointingDevice", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aMouseInfo[UBound($aMouseInfo) + 1][31] $aMouseInfo[$i][0] = $objItem.Name $aMouseInfo[$i][1] = $objItem.Availability $aMouseInfo[$i][2] = $objItem.ConfigManagerErrorCode $aMouseInfo[$i][3] = $objItem.ConfigManagerUserConfig $aMouseInfo[$i][4] = $objItem.Description $aMouseInfo[$i][5] = $objItem.CreationClassName $aMouseInfo[$i][6] = $objItem.DeviceID $aMouseInfo[$i][7] = $objItem.DeviceInterface $aMouseInfo[$i][8] = $objItem.DoubleSpeedThreshold $aMouseInfo[$i][9] = $objItem.ErrorCleared $aMouseInfo[$i][10] = $objItem.ErrorDescription $aMouseInfo[$i][11] = $objItem.Handedness $aMouseInfo[$i][12] = $objItem.HardwareType $aMouseInfo[$i][13] = $objItem.InfFileName $aMouseInfo[$i][14] = $objItem.InfSection $aMouseInfo[$i][15] = $objItem.IsLocked $aMouseInfo[$i][16] = $objItem.LastErrorCode $aMouseInfo[$i][17] = $objItem.Manufacturer $aMouseInfo[$i][18] = $objItem.NumberOfButtons $aMouseInfo[$i][19] = $objItem.PNPDeviceID $aMouseInfo[$i][20] = $objItem.PointingType $aMouseInfo[$i][21] = $objItem.PowerManagementCapabilities(0) $aMouseInfo[$i][22] = $objItem.PowerManagementSupported $aMouseInfo[$i][23] = $objItem.QuadSpeedThreshold $aMouseInfo[$i][24] = $objItem.Resolution $aMouseInfo[$i][25] = $objItem.SampleRate $aMouseInfo[$i][26] = $objItem.Status $aMouseInfo[$i][27] = $objItem.StatusInfo $aMouseInfo[$i][28] = $objItem.Synch $aMouseInfo[$i][29] = $objItem.SystemCreationClassName $aMouseInfo[$i][30] = $objItem.SystemName $i += 1 Next $aMouseInfo[0][0] = UBound($aMouseInfo) - 1 If $aMouseInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aMouseInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Mouse Func __PCinfo_Get_NetworkCards() Local $colItems, $objWMIService, $objItem Dim $aNetworkInfo[1][34], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aNetworkInfo[UBound($aNetworkInfo) + 1][34] $aNetworkInfo[$i][0] = $objItem.Name $aNetworkInfo[$i][1] = $objItem.AdapterType $aNetworkInfo[$i][2] = $objItem.AdapterTypeId $aNetworkInfo[$i][3] = $objItem.AutoSense $aNetworkInfo[$i][4] = $objItem.Description $aNetworkInfo[$i][5] = $objItem.Availability $aNetworkInfo[$i][6] = $objItem.ConfigManagerErrorCode $aNetworkInfo[$i][7] = $objItem.ConfigManagerUserConfig $aNetworkInfo[$i][8] = $objItem.CreationClassName $aNetworkInfo[$i][9] = $objItem.DeviceID $aNetworkInfo[$i][10] = $objItem.ErrorCleared $aNetworkInfo[$i][11] = $objItem.ErrorDescription $aNetworkInfo[$i][12] = $objItem.Index $aNetworkInfo[$i][13] = $objItem.InstALLed $aNetworkInfo[$i][14] = $objItem.LastErrorCode $aNetworkInfo[$i][15] = $objItem.MACAddress $aNetworkInfo[$i][16] = $objItem.Manufacturer $aNetworkInfo[$i][17] = $objItem.MaxNumberControlled $aNetworkInfo[$i][18] = $objItem.MaxSpeed $aNetworkInfo[$i][19] = $objItem.NetConnectionID $aNetworkInfo[$i][20] = $objItem.NetConnectionStatus $aNetworkInfo[$i][21] = $objItem.NetworkAddresses(0) $aNetworkInfo[$i][22] = $objItem.PermanentAddress $aNetworkInfo[$i][23] = $objItem.PNPDeviceID $aNetworkInfo[$i][24] = $objItem.PowerManagementCapabilities(0) $aNetworkInfo[$i][25] = $objItem.PowerManagementSupported $aNetworkInfo[$i][26] = $objItem.ProductName $aNetworkInfo[$i][27] = $objItem.ServiceName $aNetworkInfo[$i][28] = $objItem.Speed $aNetworkInfo[$i][29] = $objItem.Status $aNetworkInfo[$i][30] = $objItem.StatusInfo $aNetworkInfo[$i][31] = $objItem.SystemCreationClassName $aNetworkInfo[$i][32] = $objItem.SystemName $aNetworkInfo[$i][33] = __StringToDate($objItem.TimeOfLastReset) $i += 1 Next $aNetworkInfo[0][0] = UBound($aNetworkInfo) - 1 If $aNetworkInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aNetworkInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_NetworkCards Func __PCinfo_Get_Printers() Local $colItems, $objWMIService, $objItem Dim $aPrinterInfo[1][85], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aPrinterInfo[UBound($aPrinterInfo) + 1][85] $aPrinterInfo[$i][0] = $objItem.Name $aPrinterInfo[$i][1] = $objItem.Attributes $aPrinterInfo[$i][2] = $objItem.Availability $aPrinterInfo[$i][3] = $objItem.AvailableJobSheets(0) $aPrinterInfo[$i][4] = $objItem.Description $aPrinterInfo[$i][5] = $objItem.AveragePagesPerMinute $aPrinterInfo[$i][6] = $objItem.Capabilities(0) $aPrinterInfo[$i][7] = $objItem.CapabilityDescriptions(0) $aPrinterInfo[$i][8] = $objItem.CharSetsSupported(0) $aPrinterInfo[$i][9] = $objItem.Comment $aPrinterInfo[$i][10] = $objItem.ConfigManagerErrorCode $aPrinterInfo[$i][11] = $objItem.ConfigManagerUserConfig $aPrinterInfo[$i][12] = $objItem.CreationClassName $aPrinterInfo[$i][13] = $objItem.CurrentCapabilities(0) $aPrinterInfo[$i][14] = $objItem.CurrentCharSet $aPrinterInfo[$i][15] = $objItem.CurrentLanguage $aPrinterInfo[$i][16] = $objItem.CurrentMimeType $aPrinterInfo[$i][17] = $objItem.CurrentNaturALLanguage $aPrinterInfo[$i][18] = $objItem.CurrentPaperType $aPrinterInfo[$i][19] = $objItem.Default $aPrinterInfo[$i][20] = $objItem.DefaultCapabilities(0) $aPrinterInfo[$i][21] = $objItem.DefaultCopies $aPrinterInfo[$i][22] = $objItem.DefaultLanguage $aPrinterInfo[$i][23] = $objItem.DefaultMimeType $aPrinterInfo[$i][24] = $objItem.DefaultNumberUp $aPrinterInfo[$i][25] = $objItem.DefaultPaperType $aPrinterInfo[$i][26] = $objItem.DefaultPriority $aPrinterInfo[$i][27] = $objItem.DetectedErrorState $aPrinterInfo[$i][28] = $objItem.DeviceID $aPrinterInfo[$i][29] = $objItem.Direct $aPrinterInfo[$i][30] = $objItem.DoCompleteFirst $aPrinterInfo[$i][31] = $objItem.DriverName $aPrinterInfo[$i][32] = $objItem.EnableBIDI $aPrinterInfo[$i][33] = $objItem.EnableDevQueryPrint $aPrinterInfo[$i][34] = $objItem.ErrorCleared $aPrinterInfo[$i][35] = $objItem.ErrorDescription $aPrinterInfo[$i][36] = $objItem.ErrorInformation(0) $aPrinterInfo[$i][37] = $objItem.ExtendedDetectedErrorState $aPrinterInfo[$i][38] = $objItem.ExtendedPrinterStatus $aPrinterInfo[$i][39] = $objItem.Hidden $aPrinterInfo[$i][40] = $objItem.HorizontalResolution $aPrinterInfo[$i][41] = __StringToDate($objItem.InstALLDate) $aPrinterInfo[$i][42] = $objItem.JobCountSinceLastReset $aPrinterInfo[$i][43] = $objItem.KeepPrintedJobs $aPrinterInfo[$i][44] = $objItem.LanguagesSupported(0) $aPrinterInfo[$i][45] = $objItem.LastErrorCode $aPrinterInfo[$i][46] = $objItem.Local $aPrinterInfo[$i][47] = $objItem.Location $aPrinterInfo[$i][48] = $objItem.MarkingTechnology $aPrinterInfo[$i][49] = $objItem.MaxCopies $aPrinterInfo[$i][50] = $objItem.MaxNumberUp $aPrinterInfo[$i][51] = $objItem.MaxSizeSupported $aPrinterInfo[$i][52] = $objItem.MimeTypesSupported(0) $aPrinterInfo[$i][53] = $objItem.NaturALLanguagesSupported(0) $aPrinterInfo[$i][54] = $objItem.Network $aPrinterInfo[$i][55] = $objItem.PaperSizesSupported(0) $aPrinterInfo[$i][56] = $objItem.PaperTypesAvailable(0) $aPrinterInfo[$i][57] = $objItem.Parameters $aPrinterInfo[$i][58] = $objItem.PNPDeviceID $aPrinterInfo[$i][59] = $objItem.PortName $aPrinterInfo[$i][60] = $objItem.PowerManagementCapabilities(0) $aPrinterInfo[$i][61] = $objItem.PowerManagementSupported $aPrinterInfo[$i][62] = $objItem.PrinterPaperNames(0) $aPrinterInfo[$i][63] = $objItem.PrinterState $aPrinterInfo[$i][64] = $objItem.PrinterStatus $aPrinterInfo[$i][65] = $objItem.PrintJobDataType $aPrinterInfo[$i][66] = $objItem.PrintProcessor $aPrinterInfo[$i][67] = $objItem.Priority $aPrinterInfo[$i][68] = $objItem.Published $aPrinterInfo[$i][69] = $objItem.Queued $aPrinterInfo[$i][70] = $objItem.RawOnly $aPrinterInfo[$i][71] = $objItem.SeparatorFile $aPrinterInfo[$i][72] = $objItem.ServerName $aPrinterInfo[$i][73] = $objItem.Shared $aPrinterInfo[$i][74] = $objItem.ShareName $aPrinterInfo[$i][75] = $objItem.SpoolEnabled $aPrinterInfo[$i][76] = __StringToDate($objItem.StartTime) $aPrinterInfo[$i][77] = $objItem.Status $aPrinterInfo[$i][78] = $objItem.StatusInfo $aPrinterInfo[$i][79] = $objItem.SystemCreationClassName $aPrinterInfo[$i][80] = $objItem.SystemName $aPrinterInfo[$i][81] = __StringToDate($objItem.TimeOfLastReset) $aPrinterInfo[$i][82] = __StringToDate($objItem.UntilTime) $aPrinterInfo[$i][83] = $objItem.VerticalResolution $aPrinterInfo[$i][84] = $objItem.WorkOffline $i += 1 Next $aPrinterInfo[0][0] = UBound($aPrinterInfo) - 1 If $aPrinterInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aPrinterInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Printers Func __PCinfo_Get_Processors() Local $colItems, $objWMIService, $objItem Dim $aProcessorInfo[1][42], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aProcessorInfo[UBound($aProcessorInfo) + 1][42] $aProcessorInfo[$i][0] = StringStripWS($objItem.Name, 1) $aProcessorInfo[$i][1] = $objItem.AddressWidth $aProcessorInfo[$i][2] = $objItem.Architecture $aProcessorInfo[$i][3] = $objItem.Availability $aProcessorInfo[$i][4] = $objItem.Description $aProcessorInfo[$i][5] = $objItem.ConfigManagerErrorCode $aProcessorInfo[$i][6] = $objItem.ConfigManagerUserConfig $aProcessorInfo[$i][7] = $objItem.CpuStatus $aProcessorInfo[$i][8] = $objItem.CreationClassName $aProcessorInfo[$i][9] = $objItem.CurrentClockSpeed $aProcessorInfo[$i][10] = $objItem.CurrentVoltage $aProcessorInfo[$i][11] = $objItem.DataWidth $aProcessorInfo[$i][12] = $objItem.DeviceID $aProcessorInfo[$i][13] = $objItem.ErrorCleared $aProcessorInfo[$i][14] = $objItem.ErrorDescription $aProcessorInfo[$i][15] = $objItem.ExtClock $aProcessorInfo[$i][16] = $objItem.Family $aProcessorInfo[$i][17] = $objItem.L2CacheSize $aProcessorInfo[$i][18] = $objItem.L2CacheSpeed $aProcessorInfo[$i][19] = $objItem.LastErrorCode $aProcessorInfo[$i][20] = $objItem.Level $aProcessorInfo[$i][21] = $objItem.LoadPercentage $aProcessorInfo[$i][22] = $objItem.Manufacturer $aProcessorInfo[$i][23] = $objItem.MaxClockSpeed $aProcessorInfo[$i][24] = $objItem.OtherFamilyDescription $aProcessorInfo[$i][25] = $objItem.PNPDeviceID $aProcessorInfo[$i][26] = $objItem.PowerManagementCapabilities(0) $aProcessorInfo[$i][27] = $objItem.PowerManagementSupported $aProcessorInfo[$i][28] = $objItem.ProcessorId $aProcessorInfo[$i][29] = $objItem.ProcessorType $aProcessorInfo[$i][30] = $objItem.Revision $aProcessorInfo[$i][31] = $objItem.Role $aProcessorInfo[$i][32] = $objItem.SocketDesignation $aProcessorInfo[$i][33] = $objItem.Status $aProcessorInfo[$i][34] = $objItem.StatusInfo $aProcessorInfo[$i][35] = $objItem.Stepping $aProcessorInfo[$i][36] = $objItem.SystemCreationClassName $aProcessorInfo[$i][37] = $objItem.SystemName $aProcessorInfo[$i][38] = $objItem.UniqueId $aProcessorInfo[$i][39] = $objItem.UpgradeMethod $aProcessorInfo[$i][40] = $objItem.Version $aProcessorInfo[$i][41] = $objItem.VoltageCaps $i += 1 Next $aProcessorInfo[0][0] = UBound($aProcessorInfo) - 1 If $aProcessorInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aProcessorInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_Processors Func __PCinfo_Get_SoundCards() Local $colItems, $objWMIService, $objItem Dim $aSoundCardInfo[1][21], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_SoundDevice", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aSoundCardInfo[UBound($aSoundCardInfo) + 1][21] $aSoundCardInfo[$i][0] = $objItem.Name $aSoundCardInfo[$i][1] = $objItem.Availability $aSoundCardInfo[$i][2] = $objItem.ConfigManagerErrorCode $aSoundCardInfo[$i][3] = $objItem.ConfigManagerUserConfig $aSoundCardInfo[$i][4] = $objItem.Description $aSoundCardInfo[$i][5] = $objItem.CreationClassName $aSoundCardInfo[$i][6] = $objItem.DeviceID $aSoundCardInfo[$i][7] = $objItem.DMABufferSize $aSoundCardInfo[$i][8] = $objItem.ErrorCleared $aSoundCardInfo[$i][9] = $objItem.ErrorDescription $aSoundCardInfo[$i][10] = $objItem.LastErrorCode $aSoundCardInfo[$i][11] = $objItem.Manufacturer $aSoundCardInfo[$i][12] = $objItem.MPU401Address $aSoundCardInfo[$i][13] = $objItem.PNPDeviceID $aSoundCardInfo[$i][14] = $objItem.PowerManagementCapabilities(0) $aSoundCardInfo[$i][15] = $objItem.PowerManagementSupported $aSoundCardInfo[$i][16] = $objItem.ProductName $aSoundCardInfo[$i][17] = $objItem.Status $aSoundCardInfo[$i][18] = $objItem.StatusInfo $aSoundCardInfo[$i][19] = $objItem.SystemCreationClassName $aSoundCardInfo[$i][20] = $objItem.SystemName $i += 1 Next $aSoundCardInfo[0][0] = UBound($aSoundCardInfo) - 1 If $aSoundCardInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aSoundCardInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_SoundCards Func __PCinfo_Get_System() Local $colItems, $objWMIService, $objItem Dim $aSystemInfo[1][52], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aSystemInfo[UBound($aSystemInfo) + 1][52] $aSystemInfo[$i][0] = $objItem.Name $aSystemInfo[$i][1] = $objItem.AdminPasswordStatus $aSystemInfo[$i][2] = $objItem.AutomaticResetBootOption $aSystemInfo[$i][3] = $objItem.AutomaticResetCapability $aSystemInfo[$i][4] = $objItem.Description $aSystemInfo[$i][5] = $objItem.BootOptionOnLimit $aSystemInfo[$i][6] = $objItem.BootOptionOnWatchDog $aSystemInfo[$i][7] = $objItem.BootROMSupported $aSystemInfo[$i][8] = $objItem.BootupState $aSystemInfo[$i][9] = $objItem.ChassisBootupState $aSystemInfo[$i][10] = $objItem.CreationClassName $aSystemInfo[$i][11] = $objItem.CurrentTimeZone $aSystemInfo[$i][12] = $objItem.DaylightInEffect $aSystemInfo[$i][13] = $objItem.Domain $aSystemInfo[$i][14] = $objItem.DomainRole $aSystemInfo[$i][15] = $objItem.EnableDaylightSavingsTime $aSystemInfo[$i][16] = $objItem.FrontPanelResetStatus $aSystemInfo[$i][17] = $objItem.InfraredSupported $aSystemInfo[$i][18] = $objItem.InitiALLoadInfo(0) $aSystemInfo[$i][19] = $objItem.KeyboardPasswordStatus $aSystemInfo[$i][20] = $objItem.LastLoadInfo $aSystemInfo[$i][21] = $objItem.Manufacturer $aSystemInfo[$i][22] = $objItem.Model $aSystemInfo[$i][23] = $objItem.NameFormat $aSystemInfo[$i][24] = $objItem.NetworkServerModeEnabled $aSystemInfo[$i][25] = $objItem.NumberOfProcessors $aSystemInfo[$i][26] = $objItem.OEMLogoBitmap(0) $aSystemInfo[$i][27] = $objItem.OEMStringArray(0) $aSystemInfo[$i][28] = $objItem.PartOfDomain $aSystemInfo[$i][29] = $objItem.PauseAfterReset $aSystemInfo[$i][30] = $objItem.PowerManagementCapabilities(0) $aSystemInfo[$i][31] = $objItem.PowerManagementSupported $aSystemInfo[$i][32] = $objItem.PowerOnPasswordStatus $aSystemInfo[$i][33] = $objItem.PowerState $aSystemInfo[$i][34] = $objItem.PowerSupplyState $aSystemInfo[$i][35] = $objItem.PrimaryOwnerContact $aSystemInfo[$i][36] = $objItem.PrimaryOwnerName $aSystemInfo[$i][37] = $objItem.ResetCapability $aSystemInfo[$i][38] = $objItem.ResetCount $aSystemInfo[$i][39] = $objItem.ResetLimit $aSystemInfo[$i][40] = $objItem.Roles(0) $aSystemInfo[$i][41] = $objItem.Status $aSystemInfo[$i][42] = $objItem.SupportContactDescription(0) $aSystemInfo[$i][43] = $objItem.SystemStartupDelay $aSystemInfo[$i][44] = $objItem.SystemStartupOptions(0) $aSystemInfo[$i][45] = $objItem.SystemStartupSetting $aSystemInfo[$i][46] = $objItem.SystemType $aSystemInfo[$i][47] = $objItem.ThermalState $aSystemInfo[$i][48] = $objItem.TotalPhysicalMemory $aSystemInfo[$i][49] = $objItem.UserName $aSystemInfo[$i][50] = $objItem.WakeUpType $aSystemInfo[$i][51] = $objItem.Workgroup $i += 1 Next $aSystemInfo[0][0] = UBound($aSystemInfo) - 1 If $aSystemInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aSystemInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_System Func __PCinfo_Get_SystemProduct() Local $colItems, $objWMIService, $objItem Dim $aSysProductInfo[1][7], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aSysProductInfo[UBound($aSysProductInfo) + 1][7] $aSysProductInfo[$i][0] = $objItem.Name $aSysProductInfo[$i][1] = $objItem.IdentifyingNumber $aSysProductInfo[$i][2] = $objItem.SKUNumber $aSysProductInfo[$i][3] = $objItem.UUID $aSysProductInfo[$i][4] = $objItem.Description $aSysProductInfo[$i][5] = $objItem.Vendor $aSysProductInfo[$i][6] = $objItem.Version $i += 1 Next $aSysProductInfo[0][0] = UBound($aSysProductInfo) - 1 If $aSysProductInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aSysProductInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_SystemProduct Func __PCinfo_Get_VideoCards() Local $colItems, $objWMIService, $objItem Dim $aVideoInfo[1][59], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_CompName & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", 0x10 + 0x20) If IsObj($colItems) Then For $objItem In $colItems ReDim $aVideoInfo[UBound($aVideoInfo) + 1][59] $aVideoInfo[$i][0] = $objItem.Name $aVideoInfo[$i][1] = $objItem.AcceleratorCapabilities(0) $aVideoInfo[$i][2] = $objItem.AdapterCompatibility $aVideoInfo[$i][3] = $objItem.AdapterDACType $aVideoInfo[$i][4] = $objItem.Description $aVideoInfo[$i][5] = $objItem.AdapterRAM $aVideoInfo[$i][6] = $objItem.Availability $aVideoInfo[$i][7] = $objItem.CapabilityDescriptions(0) $aVideoInfo[$i][8] = $objItem.ColorTableEntries $aVideoInfo[$i][9] = $objItem.ConfigManagerErrorCode $aVideoInfo[$i][10] = $objItem.ConfigManagerUserConfig $aVideoInfo[$i][11] = $objItem.CreationClassName $aVideoInfo[$i][12] = $objItem.CurrentBitsPerPixel $aVideoInfo[$i][13] = $objItem.CurrentHorizontalResolution $aVideoInfo[$i][14] = $objItem.CurrentNumberOfColors $aVideoInfo[$i][15] = $objItem.CurrentNumberOfColumns $aVideoInfo[$i][16] = $objItem.CurrentNumberOfRows $aVideoInfo[$i][17] = $objItem.CurrentRefreshRate $aVideoInfo[$i][18] = $objItem.CurrentScanMode $aVideoInfo[$i][19] = $objItem.CurrentVerticalResolution $aVideoInfo[$i][20] = $objItem.DeviceID $aVideoInfo[$i][21] = $objItem.DeviceSpecificPens $aVideoInfo[$i][22] = $objItem.DitherType $aVideoInfo[$i][23] = __StringToDate($objItem.DriverDate) $aVideoInfo[$i][24] = $objItem.DriverVersion $aVideoInfo[$i][25] = $objItem.ErrorCleared $aVideoInfo[$i][26] = $objItem.ErrorDescription $aVideoInfo[$i][27] = $objItem.ICMIntent $aVideoInfo[$i][28] = $objItem.ICMMethod $aVideoInfo[$i][29] = $objItem.InfFilename $aVideoInfo[$i][30] = $objItem.InfSection $aVideoInfo[$i][31] = $objItem.InstALLedDisplayDrivers $aVideoInfo[$i][32] = $objItem.LastErrorCode $aVideoInfo[$i][33] = $objItem.MaxMemorySupported $aVideoInfo[$i][34] = $objItem.MaxNumberControlled $aVideoInfo[$i][35] = $objItem.MaxRefreshRate $aVideoInfo[$i][36] = $objItem.MinRefreshRate $aVideoInfo[$i][37] = $objItem.Monochrome $aVideoInfo[$i][38] = $objItem.NumberOfColorPlanes $aVideoInfo[$i][39] = $objItem.NumberOfVideoPages $aVideoInfo[$i][40] = $objItem.PNPDeviceID $aVideoInfo[$i][41] = $objItem.PowerManagementCapabilities(0) $aVideoInfo[$i][42] = $objItem.PowerManagementSupported $aVideoInfo[$i][43] = $objItem.ProtocolSupported $aVideoInfo[$i][44] = $objItem.ReservedSystemPaletteEntries $aVideoInfo[$i][45] = $objItem.SpecificationVersion $aVideoInfo[$i][46] = $objItem.Status $aVideoInfo[$i][47] = $objItem.StatusInfo $aVideoInfo[$i][48] = $objItem.SystemCreationClassName $aVideoInfo[$i][49] = $objItem.SystemName $aVideoInfo[$i][50] = $objItem.SystemPaletteEntries $aVideoInfo[$i][51] = __StringToDate($objItem.TimeOfLastReset) $aVideoInfo[$i][52] = $objItem.VideoArchitecture $aVideoInfo[$i][53] = $objItem.VideoMemoryType $aVideoInfo[$i][54] = $objItem.VideoMode $aVideoInfo[$i][55] = $objItem.VideoModeDescription $aVideoInfo[$i][56] = $objItem.VideoProcessor $i += 1 Next $aVideoInfo[0][0] = UBound($aVideoInfo) - 1 If $aVideoInfo[0][0] < 1 Then SetError(1, 1, 0) EndIf Return $aVideoInfo Else SetError(1, 2, 0) EndIf EndFunc ;==>__PCinfo_Get_VideoCards Func __StringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) & "/" & StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2)) EndFunc ;==>__StringToDate Func __PCinfo_Write_Array2HTML($iArray, $sTitle = '', $TableHeader = '') Local $varRowColorValue, $xDim = UBound($iArray, 1) - 1 Local $yDim = UBound($iArray, 2) - 1 $sHTML_Content &= "<div class=""container""><h3><a href='#" & StringReplace($sTitle, " ", "_") & "' data-toggle='collapse'>" & $sTitle & "</a></h3>" & @CRLF $sHTML_Content &= "<div id='" & StringReplace($sTitle, " ", "_") & "' class='collapse'><table border='0'>" & @CRLF If ($TableHeader <> "") And ($TableHeader <> Default) Then If StringInStr($TableHeader, ',') Then Local $aHeader = StringSplit($TableHeader, ',', 1) If IsArray($aHeader) Then $sHTML_Content &= '<tr bgcolor="#C4E1FF">' & @CRLF For $h = 1 To $aHeader[0] If ($h == 1) Then $sHTML_Content &= "<td><center>" & $aHeader[$h] & "</center></td>" & @CRLF Else $sHTML_Content &= "<td>" & $aHeader[$h] & "</td>" & @CRLF EndIf Next $sHTML_Content &= "</tr>" & @CRLF EndIf EndIf EndIf Local $varRowColor = 0 For $x = 0 To $xDim If $varRowColor = 0 Then $varRowColor = 1 $varRowColorValue = "#9BCDFF" Else $varRowColor = 0 $varRowColorValue = "#C4E1FF" EndIf $sHTML_Content &= "<tr bgcolor='" & $varRowColorValue & "'>" & @CRLF For $y = 0 To $yDim If ($y == 0) Then $sHTML_Content &= "<td><center>" & StringReplace($iArray[$x][$y], '|', @CRLF) & "</center></td>" & @CRLF Else $sHTML_Content &= "<td>" & StringReplace($iArray[$x][$y], '|', @CRLF) & "</td>" & @CRLF EndIf Next $sHTML_Content &= "</tr>" & @CRLF Next $sHTML_Content &= "</table></div></div></br>" & @CRLF & @CRLF EndFunc ;==>__PCinfo_Write_Array2HTML Func __PCinfo_Write_Array2CSVlog($iArray, $sTitle = '', $LogHeader = '') Local $xDim = UBound($iArray, 1) - 1 Local $yDim = UBound($iArray, 2) - 1 $sLogs_Content &= @CRLF & '# ' & $sTitle & ' :---------------------------------------------\' & @CRLF If ($LogHeader <> "") And ($LogHeader <> Default) Then $sLogs_Content &= $LogHeader & @CRLF For $x = 0 To $xDim For $y = 0 To $yDim If (StringStripWS($iArray[$x][$y], 8) == '') Then ContinueLoop $sLogs_Content &= '"' & $iArray[$x][$y] & '"' If $y < $yDim Then $sLogs_Content &= "," Else $sLogs_Content &= @CRLF EndIf Next Next $sLogs_Content &= @CRLF & '# ' & $sTitle & ' :---------------------------------------------/' & @CRLF & @CRLF EndFunc ;==>__PCinfo_Write_Array2CSVlog Func __PCinfo_HTML_AddHeader($sTitle = @ComputerName & " System Info") $sHTML_Content &= '<html>' & @CRLF $sHTML_Content &= '<head><meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" /><title>' & $sTitle & '</title>' & @CRLF $sHTML_Content &= '<!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">' & @CRLF $sHTML_Content &= '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>' & @CRLF $sHTML_Content &= '<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>' & @CRLF $sHTML_Content &= '<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>-->' & @CRLF $sHTML_Content &= '</head>' & @CRLF $sHTML_Content &= "<body><title>" & $sTitle & "</title>" & @CRLF & "<div class=""jumbotron jumbotron-fluid""><div class=""container""><center><h1>" & $sTitle & "</h1></div></div>" & "<div class=""container"">Scan Initiated: " & @MON & "/" & @MDAY & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & "</br></br></br></div>" & @CRLF EndFunc ;==>__PCinfo_HTML_AddHeader Func __PCinfo_HTML_AddFooter() $sHTML_Content &= "</div></br><div class=""container"">Scan Complete: " & @MON & "/" & @MDAY & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & "</div>" & @CRLF $sHTML_Content &= '</body></html>' & @CRLF EndFunc ;==>__PCinfo_HTML_AddFooter Func __PCinfo_Get_SysOverview() Dim $aWin_Info[13][2] $aWin_Info[0][0] = 12 $aWin_Info[1][0] = '' & 'ComputerName' $aWin_Info[1][1] = '' & @ComputerName $aWin_Info[2][0] = 'UserName' $aWin_Info[2][1] = @UserName Local $_winver = FileGetVersion(@SystemDir & "\ntoskrnl.exe") If @error Then $_winver = FileGetVersion(@SystemDir & "\winver.exe") If $isWin64 Then $aWin_Info[3][0] = '' & 'ProductName' $aWin_Info[3][1] = RegRead('HKLM64\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ProductName') & ' ' & RegRead('HKLM64\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DisplayVersion') & ' ' & $_winver & ' ' & @CPUArch & ((@OSServicePack <> '') ? ' ' & @OSServicePack : '') Else $aWin_Info[3][0] = '' & 'ProductName' $aWin_Info[3][1] = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ProductName') & ' ' & RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DisplayVersion') & ' ' & $_winver & ' ' & @CPUArch & ((@OSServicePack <> '') ? ' ' & @OSServicePack : '') EndIf Local $cpu_ProcessorName = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0', "ProcessorNameString") Local $cpu_Identifier = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0', "Identifier") If $cpu_ProcessorName = '' Then $cpu_ProcessorName = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\1', "ProcessorNameString") If $cpu_Identifier = '' Then $cpu_Identifier = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\1', "Identifier") Local $main_Manufacturer = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS', "BaseBoardManufacturer") If $main_Manufacturer <> '' Then $main_Manufacturer = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS', "BIOSVendor") If $main_Manufacturer <> '' Then $main_Manufacturer = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS', "SystemManufacturer") Local $main_Family = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS', "SystemFamily") If $main_Family = '' Then $main_Family = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS', "SystemVersion") Local $main_ProductName = RegRead('HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS', "SystemProductName") If $cpu_ProcessorName <> '' Then If $cpu_Identifier <> '' Then $aWin_Info[4][0] = '' & 'ProcessorName' $aWin_Info[4][1] = '' & $cpu_ProcessorName & ' / ' & $cpu_Identifier Else $aWin_Info[4][0] = '' & 'ProcessorName' $aWin_Info[4][1] = '' & $cpu_ProcessorName EndIf EndIf Local $aMemStats = MemGetStats() If IsArray($aMemStats) Then If UBound($aMemStats) = 7 Then $aWin_Info[5][0] = '' & 'RAM' $aWin_Info[5][1] = 'Physical: ' & Round($aMemStats[1] / 1024 / 1024, 2) & ' GB (Free: ' & Round($aMemStats[2] / 1024 / 1024, 2) & ' GB) / Page Size: ' & Round($aMemStats[3] / 1024 / 1024, 2) & ' GB (Free: ' & Round($aMemStats[4] / 1024 / 1024, 2) & ' GB)' EndIf EndIf Local $sManufacturer If $main_Manufacturer <> '' Then If $main_Family <> '' Then $sManufacturer &= '' & $main_Manufacturer & ' / ' & $main_Family EndIf If $main_ProductName <> '' Then $sManufacturer &= '' & $main_Manufacturer & ' / ' & $main_Family & ' / ' & $main_ProductName EndIf $aWin_Info[6][0] = '' & 'Manufacturer' $aWin_Info[6][1] = $sManufacturer EndIf Local $tzinfo = __PCinfo_dtGetTimeZoneInformation() If IsArray($tzinfo) Then If $tzinfo[2] <> '' Then $aWin_Info[7][0] = 'TimeZone' $aWin_Info[7][1] = '' & $tzinfo[2] EndIf EndIf $aWin_Info[8][0] = '' & 'OS' $aWin_Info[8][1] = 'OSVersion: ' & @OSVersion & ' / OSArch: ' & @OSArch & ' / OSLang: ' & @OSLang & ' / OSType: ' & @OSType & ' / OSBuild: ' & @OSBuild & ' / MUILang: ' & @MUILang & ' / Keyboard Layout: ' & @KBLayout $aWin_Info[9][0] = '' & 'Desktop' $aWin_Info[9][1] = 'Width x Height: ' & @DesktopWidth & ' x ' & @DesktopHeight & ' / ColorDepth: ' & @DesktopDepth & ' / Refresh: ' & @DesktopRefresh $aWin_Info[10][0] = '' & 'Environment [Path]' $aWin_Info[10][1] = '' & EnvGet("Path") $aWin_Info[11][0] = '' & 'Home' $aWin_Info[11][1] = '[HomeDrive: ' & @HomeDrive & '] [HomePath: ' & @HomePath & '] [HomeShare: ' & @HomeShare & ']' $aWin_Info[12][0] = '' & 'Logon' $aWin_Info[12][1] = '[Domain: ' & @LogonDomain & '] [Server: ' & @LogonServer & '] [DNS: ' & @LogonDNSDomain & ']' Return $aWin_Info EndFunc ;==>__PCinfo_Get_SysOverview Func __PCinfo_StringStripCRWS($String, $removeSpace = 0) $String = StringStripCR($String) $String = StringStripWS($String, 7) $String = StringReplace($String, @LF, ' ') $String = StringReplace($String, @CRLF, ' ') $String = StringReplace($String, @CR, ' ') While StringInStr($String, ' ' & ' ') $String = StringReplace($String, ' ' & ' ', ' ') WEnd If $removeSpace > 0 Then Return StringStripWS($String, 8) If StringStripWS($String, 8) == '' Then Return '' Return $String EndFunc ;==>__PCinfo_StringStripCRWS Func __PCinfo_Get_AdaptersInfo($sComputer = ".") Local $Cols = 20, $strIndex, $objVAR, $objVARx, $zAdapter, $zAdapterName, $zSpeed, $zIndex, $zInterfaceIndex, $zGetIPType, $zAdapterStatus, $zIP, $zMAC, $zSubNetIP, $zGetwayIP, $zGetwayMAC Local $aReturn[1][$Cols] = [[0, $Cols]] If $sComputer = Default Then $sComputer = @ComputerName Local $sListIndexInterfaceName = __PCinfo_Get_ListIndexInterfaceName() Local $objwmi = ObjGet("winmgmts:\\" & $sComputer & "\root\cimv2") Local $objWQLx = $objwmi.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID != NULL", "WQL", 0x30) If Not @error And IsObj($objWQLx) Then For $objVARx In $objWQLx $zAdapterName = $objVARx.NetConnectionID If (__PCinfo_StringStripCRWS($zAdapterName) = "") Then ContinueLoop $zSpeed = __PCinfo_ByteSuffixRound($objVARx.Speed) If Int($zSpeed) <= 0 Then For $z = 0 To UBound($sListIndexInterfaceName) - 1 If $sListIndexInterfaceName[$z][1] = $zAdapterName Then $zSpeed = __PCinfo_ByteSuffixRound(__PCinfo_Get_InterfaceIndexSpeed($sListIndexInterfaceName[$z][0])) Next EndIf $zAdapterStatus = $objVARx.NetConnectionStatus Switch $zAdapterStatus Case 0, 3 $zAdapterStatus = "Disable" Case 1, 2 $zAdapterStatus = "Connected" Case $zAdapterStatus = 7 $zAdapterStatus = "unPlugged" Case Else $zAdapterStatus = "N/A" EndSwitch $strIndex = $objVARx.Index Local $objWQL = $objwmi.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index=' & $strIndex, "WQL", 0x30) If Not @error And IsObj($objWQL) Then For $objVAR In $objWQL $zAdapter = $objVAR.Description $aReturn[0][0] += 1 $zIndex = $aReturn[0][0] ReDim $aReturn[$zIndex * 2][$aReturn[0][1]] $zInterfaceIndex = $objVAR.InterfaceIndex If Int($zInterfaceIndex) <= 0 Then For $z = 0 To UBound($sListIndexInterfaceName) - 1 If $sListIndexInterfaceName[$z][1] = $zAdapterName Then $zInterfaceIndex = $sListIndexInterfaceName[$z][0] Next EndIf $aReturn[$zIndex][0] = $zInterfaceIndex $aReturn[$zIndex][1] = $zAdapter $aReturn[$zIndex][2] = $zAdapterName $aReturn[$zIndex][3] = $zAdapterStatus $zGetIPType = $objVAR.DHCPEnabled If $zGetIPType Then $zGetIPType = "DHCP" Else $zGetIPType = "StaticIP" EndIf $aReturn[$zIndex][4] = $zGetIPType $zIP = $objVAR.IPAddress(0) If __PCinfo_StringStripCRWS($zIP) = "" Then $zIP = "N/A" $aReturn[$zIndex][5] = $zIP $zSubNetIP = $objVAR.IPSubnet(0) If __PCinfo_StringStripCRWS($zSubNetIP) = "" Then $zSubNetIP = "N/A" $aReturn[$zIndex][6] = $zSubNetIP $zMAC = $objVAR.MACAddress If __PCinfo_StringStripCRWS($zMAC) = "" Then $zMAC = "N/A" $aReturn[$zIndex][7] = $zMAC $zGetwayIP = $objVAR.DefaultIPGateway(0) If __PCinfo_StringStripCRWS($zGetwayIP) = "" Then $zGetwayIP = "N/A" $aReturn[$zIndex][8] = $zGetwayIP $zGetwayMAC = "N/A" If __PCinfo_StringStripCRWS($zGetwayIP) <> "N/A" Then $zGetwayMAC = __PCinfo_Get_MACFromIP($zGetwayIP) $aReturn[$zIndex][9] = $zGetwayMAC If Number($zSpeed) = 0 Then $zSpeed = "N/A" $aReturn[$zIndex][10] = $zSpeed $aReturn[$zIndex][11] = "N/A" $aReturn[$zIndex][12] = "N/A" $aReturn[$zIndex][13] = "N/A" $aReturn[$zIndex][14] = "N/A" $aReturn[$zIndex][15] = "N/A" $aReturn[$zIndex][16] = "N/A" $aReturn[$zIndex][17] = "N/A" $aReturn[$zIndex][18] = "N/A" Local $zDNS = $objVAR.DNSServerSearchOrder() Local $dnsCount = UBound($zDNS) $aReturn[$zIndex][19] = $dnsCount If IsArray($zDNS) Then Switch $dnsCount Case 1 $aReturn[$zIndex][11] = $zDNS[0] Case 2 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] Case 3 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] $aReturn[$zIndex][13] = $zDNS[2] Case 4 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] $aReturn[$zIndex][13] = $zDNS[2] $aReturn[$zIndex][14] = $zDNS[3] Case 5 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] $aReturn[$zIndex][13] = $zDNS[2] $aReturn[$zIndex][14] = $zDNS[3] $aReturn[$zIndex][15] = $zDNS[4] Case 6 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] $aReturn[$zIndex][13] = $zDNS[2] $aReturn[$zIndex][14] = $zDNS[3] $aReturn[$zIndex][15] = $zDNS[4] $aReturn[$zIndex][16] = $zDNS[5] Case 7 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] $aReturn[$zIndex][13] = $zDNS[2] $aReturn[$zIndex][14] = $zDNS[3] $aReturn[$zIndex][15] = $zDNS[4] $aReturn[$zIndex][16] = $zDNS[5] $aReturn[$zIndex][17] = $zDNS[6] Case 8 $aReturn[$zIndex][11] = $zDNS[0] $aReturn[$zIndex][12] = $zDNS[1] $aReturn[$zIndex][13] = $zDNS[2] $aReturn[$zIndex][14] = $zDNS[3] $aReturn[$zIndex][15] = $zDNS[4] $aReturn[$zIndex][16] = $zDNS[5] $aReturn[$zIndex][17] = $zDNS[6] $aReturn[$zIndex][18] = $zDNS[7] Case Else $aReturn[$zIndex][11] = $zDNS[0] EndSwitch EndIf Next EndIf Next Return $aReturn EndIf Return SetError(1, 0, "") EndFunc ;==>__PCinfo_Get_AdaptersInfo Func __PCinfo_Get_ListIndexInterfaceName() Local Const $tagIP_ADAPTER_ADDRESSES = "ulong Length;dword IfIndex;ptr Next;ptr AdapterName;ptr FirstUnicastAddress;" & "ptr FirstAnycastAddress;ptr FirstMulticastAddress;ptr FirstDnsServerAddress;ptr DnsSuffix;ptr Description;" & "ptr FriendlyName;byte PhysicalAddress[8];dword PhysicalAddressLength;dword Flags;dword Mtu;dword IfType;int OperStatus;" & "dword Ipv6IfIndex;dword ZoneIndices[16];ptr FirstPrefix;" & "uint64 TransmitLinkSpeed;uint64 ReceiveLinkSpeed;ptr FirstWinsServerAddress;ptr FirstGatewayAddress;" & "ulong Ipv4Metric;ulong Ipv6Metric;uint64 Luid;STRUCT;ptr Dhcpv4ServerSockAddr;int Dhcpv4ServerSockAddrLen;ENDSTRUCT;" & "ulong CompartmentId;STRUCT;ulong NetworkGuidData1;word NetworkGuidData2;word NetworkGuidData3;byte NetworkGuidData4[8];ENDSTRUCT;" & "int ConnectionType;int TunnelType;STRUCT;ptr Dhcpv6ServerSockAddr;int Dhcpv6ServerSockAddrLen;ENDSTRUCT;byte Dhcpv6ClientDuid[130];" & "ulong Dhcpv6ClientDuidLength;ulong Dhcpv6Iaid;ptr FirstDnsSuffix;" Local $aret, $nBufSize, $stBuffer, $stIP_ADAPTER_ADDRESSES, $pIPAAStruct, $nIPAAStSize Local $pTemp, $nTemp, $nEntries, $aIndexEntries $aret = DllCall("iphlpapi.dll", "ulong", "GetAdaptersAddresses", "ulong", 0, "ulong", 0x86, "ptr", 0, "ptr", 0, "ulong*", 0) If @error Then Return SetError(1, @error, "") If $aret[0] Then If $aret[0] <> 111 Or Not $aret[5] Then Return SetError(2, $aret[0], "") EndIf $nBufSize = $aret[5] $stBuffer = DllStructCreate("int64;byte [" & $nBufSize & "];") $aret = DllCall("iphlpapi.dll", "ulong", "GetAdaptersAddresses", "ulong", 0, "ulong", 0x86, "ptr", 0, "ptr", DllStructGetPtr($stBuffer), "ulong*", $nBufSize) If @error Then Return SetError(1, @error, "") If $aret[0] Then Return SetError(2, $aret[0], "") Dim $aIndexEntries[Floor($nBufSize / 72)][2] $nEntries = 0 $pIPAAStruct = DllStructGetPtr($stBuffer) While $pIPAAStruct <> 0 $stIP_ADAPTER_ADDRESSES = DllStructCreate($tagIP_ADAPTER_ADDRESSES, $pIPAAStruct) $nIPAAStSize = DllStructGetData($stIP_ADAPTER_ADDRESSES, "Length") $nTemp = DllStructGetData($stIP_ADAPTER_ADDRESSES, "OperStatus") If ($nTemp = 2 And Not False) Or DllStructGetData($stIP_ADAPTER_ADDRESSES, "IfType") = 24 Then Else $pTemp = DllStructGetData($stIP_ADAPTER_ADDRESSES, "FirstUnicastAddress") If $pTemp <> 0 Then $aIndexEntries[$nEntries][0] = DllStructGetData($stIP_ADAPTER_ADDRESSES, "IfIndex") $aIndexEntries[$nEntries][1] = __PCinfo_Get_StringWFromPtr(DllStructGetData($stIP_ADAPTER_ADDRESSES, "FriendlyName")) $nEntries += 1 EndIf EndIf $pIPAAStruct = DllStructGetData($stIP_ADAPTER_ADDRESSES, "Next") WEnd If $nEntries = 0 Then Return SetError(-1, 0, "") ReDim $aIndexEntries[$nEntries][2] Return SetExtended($nEntries, $aIndexEntries) EndFunc ;==>__PCinfo_Get_ListIndexInterfaceName Func __PCinfo_Get_InterfaceIndexSpeed($IfIndex) Local $tBuffer, $pBuffer, $iResult, $iSpeed $tBuffer = DllStructCreate("wchar[256];dword[5];byte[8];dword[16];char[256]") $pBuffer = DllStructGetPtr($tBuffer) DllStructSetData($tBuffer, 2, $IfIndex, 1) $iResult = DllCall("iphlpapi.dll", "long", "GetIfEntry", "ptr", $pBuffer) If @error Then Return SetError(@error, @extended, 0) $iSpeed = DllStructGetData($tBuffer, 2, 4) $tBuffer = 0 Return SetError($iResult[0], $iSpeed / 1000 / 1000, $iSpeed) EndFunc ;==>__PCinfo_Get_InterfaceIndexSpeed Func __PCinfo_Get_StringWFromPtr($pStr) If Not IsPtr($pStr) Or $pStr = 0 Then Return SetError(1, 0, "") Local $aret = DllCall("kernel32.dll", "ptr", "lstrcpynW", "wstr", "", "ptr", $pStr, "int", 32767) If @error Or Not $aret[0] Then Return SetError(@error, 0, "") Return $aret[1] EndFunc ;==>__PCinfo_Get_StringWFromPtr Func __PCinfo_Get_MACFromIP($rMAC) If ($rMAC = "") Or ($rMAC = "N/A") Then Return "N/A" Local $sbMAC = DllStructCreate("byte[6]") Local $siMAC = DllStructCreate("int") DllStructSetData($siMAC, 1, 6) Local $rHexMAC = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $rMAC) $rMAC = $rHexMAC[0] $rHexMAC = DllCall("iphlpapi.dll", "int", "SendARP", "int", $rMAC, "int", 0, "ptr", DllStructGetPtr($sbMAC), "ptr", DllStructGetPtr($siMAC)) $rMAC = "" For $i = 0 To 5 If $i Then $rMAC &= ":" $rMAC = $rMAC & Hex(DllStructGetData($sbMAC, 1, $i + 1), 2) Next If ($rMAC = "") Or ($rMAC = $sBlankMAC) Or ($rMAC = "N/A") Then Return "N/A" Return $rMAC EndFunc ;==>__PCinfo_Get_MACFromIP Func __PCinfo_ByteSuffixRound($iBytes, $iRound = 2) $iBytes = Number($iBytes) If $iBytes > 1000000000 Then Return "N/A" Local $a, $aArray[5] = ["Bps", "Kbps", "Mbps", "Gbps", "Tbps"] While $iBytes > 999 $a += 1 If $a > 3 Then ExitLoop $iBytes /= 1000 WEnd Return Round($iBytes, $iRound) & " " & $aArray[$a] EndFunc ;==>__PCinfo_ByteSuffixRound Func __PCinfo_Singleton($sOccurrenceName, $iFlag = 0) Local Const $ERROR_ALREADY_EXISTS = 183 Local Const $SECURITY_DESCRIPTOR_REVISION = 1 Local $tSecurityAttributes = 0 If BitAND($iFlag, 2) Then Local $tSecurityDescriptor = DllStructCreate("byte;byte;word;ptr[4]") Local $aCALL = DllCall("advapi32.dll", "bool", "InitializeSecurityDescriptor", "struct*", $tSecurityDescriptor, "dword", $SECURITY_DESCRIPTOR_REVISION) If @error Then Return SetError(@error, @extended, 0) If $aCALL[0] Then $aCALL = DllCall("advapi32.dll", "bool", "SetSecurityDescriptorDacl", "struct*", $tSecurityDescriptor, "bool", 1, "ptr", 0, "bool", 0) If @error Then Return SetError(@error, @extended, 0) If $aCALL[0] Then $tSecurityAttributes = DllStructCreate("dword Length;ptr Descriptor;bool InheritHandle") DllStructSetData($tSecurityAttributes, 1, DllStructGetSize($tSecurityAttributes)) DllStructSetData($tSecurityAttributes, 2, DllStructGetPtr($tSecurityDescriptor)) DllStructSetData($tSecurityAttributes, 3, 0) EndIf EndIf EndIf Local $aHandle = DllCall("kernel32.dll", "handle", "CreateMutexW", "struct*", $tSecurityAttributes, "bool", 1, "wstr", $sOccurrenceName) If @error Then Return SetError(@error, @extended, 0) Local $aLastError = DllCall("kernel32.dll", "dword", "GetLastError") If @error Then Return SetError(@error, @extended, 0) If $aLastError[0] = $ERROR_ALREADY_EXISTS Then If BitAND($iFlag, 1) Then DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $aHandle[0]) If @error Then Return SetError(@error, @extended, 0) Return SetError($aLastError[0], $aLastError[0], 0) Else Exit -1 EndIf EndIf Return $aHandle[0] EndFunc ;==>__PCinfo_Singleton Func __PCinfo_dtCloneSystemTime($pSystemTime) Local $tagSYSTEMTIME = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct" Local $tSystemTime1 = DllStructCreate($tagSYSTEMTIME, $pSystemTime) Local $tSystemTime2 = DllStructCreate($tagSYSTEMTIME) DllStructSetData($tSystemTime2, "Month", DllStructGetData($tSystemTime1, "Month")) DllStructSetData($tSystemTime2, "Day", DllStructGetData($tSystemTime1, "Day")) DllStructSetData($tSystemTime2, "Year", DllStructGetData($tSystemTime1, "Year")) DllStructSetData($tSystemTime2, "Hour", DllStructGetData($tSystemTime1, "Hour")) DllStructSetData($tSystemTime2, "Minute", DllStructGetData($tSystemTime1, "Minute")) DllStructSetData($tSystemTime2, "Second", DllStructGetData($tSystemTime1, "Second")) DllStructSetData($tSystemTime2, "MSeconds", DllStructGetData($tSystemTime1, "MSeconds")) DllStructSetData($tSystemTime2, "DOW", DllStructGetData($tSystemTime1, "DOW")) Return $tSystemTime2 EndFunc ;==>__PCinfo_dtCloneSystemTime Func __PCinfo_dtGetTimeZoneInformation() Local $tagTIME_ZONE_INFORMATION = "struct;long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias;endstruct" Local $tTimeZone = DllStructCreate($tagTIME_ZONE_INFORMATION) Local $aCALL = DllCall("kernel32.dll", "dword", "GetTimeZoneInformation", "struct*", $tTimeZone) If @error Then Return SetError(@error, @extended, 0) If $aCALL[0] = -1 Then Return SetError(10, 0, 0) Local $aInfo[8] $aInfo[0] = $aCALL[0] $aInfo[1] = DllStructGetData($tTimeZone, "Bias") $aInfo[2] = DllStructGetData($tTimeZone, "StdName") $aInfo[3] = __PCinfo_dtCloneSystemTime(DllStructGetPtr($tTimeZone, "StdDate")) $aInfo[4] = DllStructGetData($tTimeZone, "StdBias") $aInfo[5] = DllStructGetData($tTimeZone, "DayName") $aInfo[6] = __PCinfo_dtCloneSystemTime(DllStructGetPtr($tTimeZone, "DayDate")) $aInfo[7] = DllStructGetData($tTimeZone, "DayBias") Return $aInfo EndFunc ;==>__PCinfo_dtGetTimeZoneInformation Func __PCinfo_ObjErrorFunc() ConsoleWrite("! AutoItCOM Test - We intercepted a COM Error !" & @CRLF & @CRLF & "! Error.description is: " & @TAB & $oMyError.description & @CRLF & "! Error.windescription:" & @TAB & $oMyError.windescription & @CRLF & "! Error.number is: " & @TAB & Hex($oMyError.number, 8) & @CRLF & "! Error.lastdllError is: " & @TAB & $oMyError.lastdllError & @CRLF & "! Error.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & "! Error.source is: " & @TAB & $oMyError.source & @CRLF & "! Error.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & "! Error.helpcontext is: " & @TAB & $oMyError.helpcontext & @CRLF & @CRLF) EndFunc ;==>__PCinfo_ObjErrorFunc #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=iCon.ico #AutoIt3Wrapper_Compile_Both=y #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_Res_Comment=Dao Van Trong - TRONG.PRO #AutoIt3Wrapper_Res_Description=Get PC Information by Dao Van Trong - TRONG.PRO #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_ProductName=Get PC Information #AutoIt3Wrapper_Res_ProductVersion=1.0.0.0 #AutoIt3Wrapper_Res_CompanyName=TRONG.PRO #AutoIt3Wrapper_Res_LegalCopyright=Dao Van Trong - TRONG.PRO #AutoIt3Wrapper_Res_LegalTradeMarks=Dao Van Trong - TRONG.PRO #AutoIt3Wrapper_Res_SaveSource=y #AutoIt3Wrapper_Res_Language=1066 #AutoIt3Wrapper_Res_requestedExecutionLevel=highestAvailable #AutoIt3Wrapper_Add_Constants=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** Â bdr529 and spudw2k 2 Regards, Â
spudw2k Posted January 8 Posted January 8 Looks familiar... Nice work! Trong 1 Spoiler Things I've Made: Always On Top Tool ◊ AU History â—ŠÂ Deck of Cards â—Š HideIt â—Š ICU â—Š Icon Freezer â—Š Ipod Ejector â—Š Junos Configuration Explorer â—Š Link Downloader â—Š MD5 Folder Enumerator â—Š PassGen â—ŠÂ Ping Tool â—Š Quick NIC â—Š Read OCR â—Š RemoteIT â—Š SchTasksGui â—Š SpyCam â—Š System Scan Report Tool â—Š System UpTime â—Š Transparency Machine ◊ VMWare ESX Builder Misc Code Snippets: ADODB Example â—Š CheckHover ◊ Detect SafeMode â—Š DynEnumArray â—Š GetNetStatData ◊ HashArray â—Š IsBetweenDates â—Š Local Admins â—Š Make Choice â—Š Recursive File List â—Š Remove Sizebox Style â—Š Retrieve PNPDeviceID â—Š Retrieve SysListView32 Contents â—Š Set IE Homepage â—Š Tickle Expired Password â—Š Transpose Array Projects: Drive Space Usage GUI â—ŠÂ LEDkIT â—Š Plasma_kIt â—ŠÂ Scan Engine Builder â—Š SpeeDBurner â—Š SubnetCalc Cool Stuff: AutoItObject UDF â—Š Extract Icon From Proc â—Š GuiCtrlFontRotate â—Š Hex Edit Funcs â—Š Run binary â—Š Service_UDF Â
Trong Posted January 8 Author Posted January 8 4 minutes ago, spudw2k said: Looks familiar... Nice work! Â LOL It looks similar to your script but I created it from Computer Info UDF HTML I took from a vbs file at my company NAS. Â Regards, Â
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now