Die (Re)dimensionierung des Arrays
Habe ich nun komplett entfernt und auch noch drei Fehler beseitigt. BiosCharacteristics, BIOSVersion und ListOfLanguages sind Arrays... die ich aber als String behandelt hatte.
Es ist für 'Normaluser' nur schwer zu erkennen, dass er auch die jeweiligen Enum-Werte entfernen muss
Tja, und was bitte soll ich daran ändern?
_GetBIOSInfo
C
;-- TIME_STAMP 2017-10-20 21:33:12 v 1.2
#Region ;************ Includes ************
#include <Array.au3>
#EndRegion ;************ Includes ************
Opt('MustDeclareVars', 1) ; Variablen müssen vor der Verwendung deklariert werden
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Global Enum $eBiosCharacteristics, $eBIOSVersion, $eBuildNumber, $eCaption, $eCodeSet, $eCurrentLanguage, $eDescription, $eEmbeddedControllerMajorVersion, $eEmbeddedControllerMinorVersion, $eIdentificationCode, $eInstallableLanguages, $eInstallDate, $eLanguageEdition, $eListOfLanguages, $eManufacturer, $eName, $eOtherTargetOS, $ePrimaryBIOS, $eReleaseDate, $eSerialNumber, $eSMBIOSBIOSVersion, $eSMBIOSMajorVersion, $eSMBIOSMinorVersion, $eSMBIOSPresent, $eSoftwareElementID, $eSoftwareElementState, $eStatus, $eSystemBiosMajorVersion, $eSystemBiosMinorVersion, $eTargetOperatingSystem, $eVersion, $eSizeOff
Global $g_aBIOSInfo = _GetBIOSInfo()
If @error Then
ConsoleWrite("! Fehler in der Funktion _GetBIOSInfo! Error = " & @error & @CRLF)
Else
For $i = 0 To $eSizeOff - 1 Step 1
ConsoleWrite(StringFormat('> %32s = %s\r', $g_aBIOSInfo[$i][0], $g_aBIOSInfo[$i][1]))
Next
ConsoleWrite(@CRLF)
Local $aSplit
$aSplit = _SplitStr($g_aBIOSInfo[$eSMBIOSBIOSVersion][1])
ConsoleWrite(StringFormat('! %32s = %s\r', 'SMBBIOSVersion Split 1', $aSplit[0]))
ConsoleWrite(StringFormat('! %32s = %s\r', 'SMBBIOSVersion Split 2', $aSplit[1]))
ConsoleWrite(@CRLF)
$aSplit = _SplitStr($g_aBIOSInfo[$eVersion][1])
ConsoleWrite(StringFormat('- %32s = %s\r', ' Version Split 1', $aSplit[0]))
ConsoleWrite(StringFormat('- %32s = %s\r', ' Version Split 2', $aSplit[1]))
ConsoleWrite(@CRLF)
ConsoleWrite(StringFormat('+ %32s = %s\r', ' Version Split 1', _SplitStr($g_aBIOSInfo[$eVersion][1])[0]))
ConsoleWrite(StringFormat('+ %32s = %s\r', ' Version Split 2', _SplitStr($g_aBIOSInfo[$eVersion][1])[1]))
ConsoleWrite(@CRLF)
ConsoleWrite(StringFormat('@ %32s = %s\r', $g_aBIOSInfo[$eManufacturer][0], $g_aBIOSInfo[$eManufacturer][1]))
_ArrayDisplay($g_aBIOSInfo)
EndIf
Func _GetBIOSInfo()
Local $objWMI, $colItems, $objItem, $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20
Local $sBIOSVersion, $sManufacturer, $sSerialNumber
Local $aReturn[$eSizeOff][2]
$objWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$colItems = $objWMI.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", BitOR($wbemFlagReturnImmediately, $wbemFlagForwardOnly))
If IsObj($colItems) Then
For $objItem In $colItems
With $objItem
If IsArray(.BiosCharacteristics) Then _ArraySetItem($aReturn, $eBiosCharacteristics, "BiosCharacteristics", _ArrayToString(.BiosCharacteristics, ","))
If IsArray(.BIOSVersion) Then _ArraySetItem($aReturn, $eBIOSVersion, "BIOSVersion", _ArrayToString(.BIOSVersion, ","))
_ArraySetItem($aReturn, $eBuildNumber, "BuildNumber", .BuildNumber)
_ArraySetItem($aReturn, $eCaption, "Caption", .Caption)
_ArraySetItem($aReturn, $eCodeSet, "CodeSet", .CodeSet)
_ArraySetItem($aReturn, $eCurrentLanguage, "CurrentLanguage", .CurrentLanguage)
_ArraySetItem($aReturn, $eDescription, "Description", .Description)
_ArraySetItem($aReturn, $eEmbeddedControllerMajorVersion, "EmbeddedControllerMajorVersion", .EmbeddedControllerMajorVersion)
_ArraySetItem($aReturn, $eEmbeddedControllerMinorVersion, "EmbeddedControllerMinorVersion", .EmbeddedControllerMinorVersion)
_ArraySetItem($aReturn, $eIdentificationCode, "IdentificationCode", .IdentificationCode)
_ArraySetItem($aReturn, $eInstallableLanguages, "InstallableLanguages", .InstallableLanguages)
_ArraySetItem($aReturn, $eInstallDate, "InstallDate", .InstallDate)
_ArraySetItem($aReturn, $eLanguageEdition, "LanguageEdition", .LanguageEdition)
If IsArray(.ListOfLanguages) Then _ArraySetItem($aReturn, $eListOfLanguages, "ListOfLanguages", _ArrayToString(.ListOfLanguages, ","))
_ArraySetItem($aReturn, $eManufacturer, "Manufacturer", .Manufacturer)
_ArraySetItem($aReturn, $eName, "Name", .Name)
_ArraySetItem($aReturn, $eOtherTargetOS, "OtherTargetOS", .OtherTargetOS)
_ArraySetItem($aReturn, $ePrimaryBIOS, "PrimaryBIOS", .PrimaryBIOS)
_ArraySetItem($aReturn, $eReleaseDate, "ReleaseDate", .ReleaseDate)
_ArraySetItem($aReturn, $eSerialNumber, "SerialNumber", .SerialNumber)
_ArraySetItem($aReturn, $eSMBIOSBIOSVersion, "SMBIOSBIOSVersion", .SMBIOSBIOSVersion)
_ArraySetItem($aReturn, $eSMBIOSMajorVersion, "SMBIOSMajorVersion", .SMBIOSMajorVersion)
_ArraySetItem($aReturn, $eSMBIOSMinorVersion, "SMBIOSMinorVersion", .SMBIOSMinorVersion)
_ArraySetItem($aReturn, $eSMBIOSPresent, "SMBIOSPresent", .SMBIOSPresent)
_ArraySetItem($aReturn, $eSoftwareElementID, "SoftwareElementID", .SoftwareElementID)
_ArraySetItem($aReturn, $eSoftwareElementState, "SoftwareElementState", .SoftwareElementState)
_ArraySetItem($aReturn, $eStatus, "Status", .Status)
_ArraySetItem($aReturn, $eSystemBiosMajorVersion, "SystemBiosMajorVersion", .SystemBiosMajorVersion)
_ArraySetItem($aReturn, $eSystemBiosMinorVersion, "SystemBiosMinorVersion", .SystemBiosMinorVersion)
_ArraySetItem($aReturn, $eTargetOperatingSystem, "TargetOperatingSystem", .TargetOperatingSystem)
_ArraySetItem($aReturn, $eVersion, "Version", .Version)
EndWith
Next
Else
Return SetError(1)
EndIf
Return $aReturn
EndFunc ;==>_GetBIOSInfo
Func MyErrFunc()
ConsoleWrite("! COM Error!" & @CRLF & _
"! err.description is : " & @TAB & $oMyError.description & @CRLF & _
"! err.windescription : " & @TAB & $oMyError.windescription & @CRLF & _
"! err.number is : " & @TAB & Hex($oMyError.number, 8) & @CRLF & _
"! err.lastdllerror is : " & @TAB & $oMyError.lastdllerror & @CRLF & _
"! err.scriptline is : " & @TAB & $oMyError.scriptline & @CRLF & _
"! err.source is : " & @TAB & $oMyError.source & @CRLF & _
"! err.helpfile is : " & @TAB & $oMyError.helpfile & @CRLF & _
"! err.helpcontext is : " & @TAB & $oMyError.helpcontext & @CRLF)
EndFunc ;==>MyErrFunc
Func _ArraySetItem(ByRef $aArray, $eNum, $sName, $sItem)
$aArray[$eNum][0] = $sName
$aArray[$eNum][1] = $sItem
EndFunc ;==>_ArraySetItem
Func _SplitStr($sStr)
Local $aSplit[2], $iSeperator = -1, $aSeperator = ['.', ' - ', '-', '']
Do
$iSeperator += 1
If $aSeperator[$iSeperator] = '' Or $sStr = '' Then
ReDim $aSplit[2]
$aSplit[0] = $sStr
$aSplit[1] = ''
ExitLoop
EndIf
$aSplit = StringRegExp($sStr, '(.+)\' & $aSeperator[$iSeperator] & '(.+)', 1)
Until UBound($aSplit) = 2
Return $aSplit
EndFunc ;==>_SplitStr
Alles anzeigen
