Bei mir das gleiche wie bei uklein
Nutze XP Pro SP3 mit einem Quad Q9550
Dein skript zeigt mir auch "Intel Pentium III Xeon-Prozessor" an
Bei mir das gleiche wie bei uklein
Nutze XP Pro SP3 mit einem Quad Q9550
Dein skript zeigt mir auch "Intel Pentium III Xeon-Prozessor" an
Win7 x86 funktioniert auch. Das Listview flackert aber bei mir ziemlich stark bis alle Informationen gesammelt sind.
Wie gesagt, zum auslesen benutze ich WMI. Hier die komplette Ausgabe:
[autoit]
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = 'localhost'
$Output=""
$Output &= 'Computer: ' & $strComputer & @CRLF
$Output &= '==========================================' & @CRLF
$objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Output &= 'AddressWidth: ' & $objItem.AddressWidth & @CRLF
$Output &= 'Architecture: ' & $objItem.Architecture & @CRLF
$Output &= 'Availability: ' & $objItem.Availability & @CRLF
$Output &= 'Caption: ' & $objItem.Caption & @CRLF
$Output &= 'ConfigManagerErrorCode: ' & $objItem.ConfigManagerErrorCode & @CRLF
$Output &= 'ConfigManagerUserConfig: ' & $objItem.ConfigManagerUserConfig & @CRLF
$Output &= 'CpuStatus: ' & $objItem.CpuStatus & @CRLF
$Output &= 'CreationClassName: ' & $objItem.CreationClassName & @CRLF
$Output &= 'CurrentClockSpeed: ' & $objItem.CurrentClockSpeed & @CRLF
$Output &= 'CurrentVoltage: ' & $objItem.CurrentVoltage & @CRLF
$Output &= 'DataWidth: ' & $objItem.DataWidth & @CRLF
$Output &= 'Description: ' & $objItem.Description & @CRLF
$Output &= 'DeviceID: ' & $objItem.DeviceID & @CRLF
$Output &= 'ErrorCleared: ' & $objItem.ErrorCleared & @CRLF
$Output &= 'ErrorDescription: ' & $objItem.ErrorDescription & @CRLF
$Output &= 'ExtClock: ' & $objItem.ExtClock & @CRLF
$Output &= 'Family: ' & $objItem.Family & @CRLF
$Output &= 'InstallDate: ' & _WMIDateStringToDate($objItem.InstallDate) & @CRLF
$Output &= 'L2CacheSize: ' & $objItem.L2CacheSize & @CRLF
$Output &= 'L2CacheSpeed: ' & $objItem.L2CacheSpeed & @CRLF
$Output &= 'L3CacheSize: ' & $objItem.L3CacheSize & @CRLF
$Output &= 'L3CacheSpeed: ' & $objItem.L3CacheSpeed & @CRLF
$Output &= 'LastErrorCode: ' & $objItem.LastErrorCode & @CRLF
$Output &= 'Level: ' & $objItem.Level & @CRLF
$Output &= 'LoadPercentage: ' & $objItem.LoadPercentage & @CRLF
$Output &= 'Manufacturer: ' & $objItem.Manufacturer & @CRLF
$Output &= 'MaxClockSpeed: ' & $objItem.MaxClockSpeed & @CRLF
$Output &= 'Name: ' & $objItem.Name & @CRLF
$Output &= 'NumberOfCores: ' & $objItem.NumberOfCores & @CRLF
$Output &= 'NumberOfLogicalProcessors: ' & $objItem.NumberOfLogicalProcessors & @CRLF
$Output &= 'OtherFamilyDescription: ' & $objItem.OtherFamilyDescription & @CRLF
$Output &= 'PNPDeviceID: ' & $objItem.PNPDeviceID & @CRLF
$strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
$Output &= 'PowerManagementCapabilities: ' & $strPowerManagementCapabilities & @CRLF
$Output &= 'PowerManagementSupported: ' & $objItem.PowerManagementSupported & @CRLF
$Output &= 'ProcessorId: ' & $objItem.ProcessorId & @CRLF
$Output &= 'ProcessorType: ' & $objItem.ProcessorType & @CRLF
$Output &= 'Revision: ' & $objItem.Revision & @CRLF
$Output &= 'Role: ' & $objItem.Role & @CRLF
$Output &= 'SocketDesignation: ' & $objItem.SocketDesignation & @CRLF
$Output &= 'Status: ' & $objItem.Status & @CRLF
$Output &= 'StatusInfo: ' & $objItem.StatusInfo & @CRLF
$Output &= 'Stepping: ' & $objItem.Stepping & @CRLF
$Output &= 'SystemCreationClassName: ' & $objItem.SystemCreationClassName & @CRLF
$Output &= 'SystemName: ' & $objItem.SystemName & @CRLF
$Output &= 'UniqueId: ' & $objItem.UniqueId & @CRLF
$Output &= 'UpgradeMethod: ' & $objItem.UpgradeMethod & @CRLF
$Output &= 'Version: ' & $objItem.Version & @CRLF
$Output &= 'VoltageCaps: ' & $objItem.VoltageCaps & @CRLF
if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
$Output=""
Next
Else
$Output &= 'No WMI Objects Found for class: ' & 'Win32_Processor'
Endif
Func _WMIDateStringToDate($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
/autoit]
Wenn Windows dabei etwas falsches ausgibt, kann ich das ja nicht überprüfen.
Bei meinen beiden Rechnern (beide mit AMD-Prozessoren, einmal Win7, einmal WinXP) stimmt die Ausgabe.
@kiku: Das mit dem flackernden Listview habe ich mittlerweile behoben. Kommt in der nächsten Version.
UEZ: Ab Win_Vista müssten beim TAB "Prozessor" die beiden Einträge "Prozessorkerne" und "logische Prozessoren" angezeigt werden. WindowsXP stellt diese Einträge per WMI leider nicht zur Verfügung.
Ich weiß, dass man ab Vista die Anzahl der Cores expliziet herauslesen kann (NumberOfCores / NumberOfLogicalProcessors in Win32_Processor), aber ich suche nach einer Möglichkeit für System kleiner Vista / Server2008.
Dachte nur, dass du was hättest...
Gruß,
UEZ
Die Anzahl und Art der Prozessoren kann man auch über die Registry rausbekommen (habe ich gerade entdeckt):
#include <Array.au3>
$aCPU = _GetCPU()
_ArrayDisplay($aCPU)
Func _GetCPU()
Local $sX64 = '', $iCount = 0
If @OSArch <> 'X86' Then $sX64 = '64'
Do
$iCount += 1
RegEnumKey('HKEY_LOCAL_MACHINE' & $sX64 & '\HARDWARE\DESCRIPTION\System\CentralProcessor', $iCount)
Until @error <> 0
$iCount -= 1
Dim $aOut[$iCount][3]
For $i = 0 To $iCount - 1
$aOut[$i][0] = RegRead('HKEY_LOCAL_MACHINE' & $sX64 & '\HARDWARE\DESCRIPTION\System\CentralProcessor\' & $i, 'Identifier')
$aOut[$i][1] = RegRead('HKEY_LOCAL_MACHINE' & $sX64 & '\HARDWARE\DESCRIPTION\System\CentralProcessor\' & $i, 'ProcessorNameString')
$aOut[$i][2] = RegRead('HKEY_LOCAL_MACHINE' & $sX64 & '\HARDWARE\DESCRIPTION\System\CentralProcessor\' & $i, '~MHz')
Next
Return $aOut
EndFunc
Und das funktioniert sogar auch unter WindowsXP (muss ich gleich mal in mein Computer-Info einbauen).
Danke Oscar!
Kann jemand das auf einem System testen, wo HT aktiviert ist?
UEZ
Ich hab' jetzt noch etwas zu meinem Script gefunden.
Microsoft schreibt dazu:
Zitat
Die im Abschnitt über den Computer aufgeführten CPU-Informationen werden aus dem Eintrag "ProcessorNameString" unter dem folgenden Registrierungsunterschlüssel abgerufen:
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
Hinweis: In diesem Beispiel steht der Wert 0 für die erste CPU im Computer. In einem Multiprozessorsystem steht 1 für die zweite physische CPU bzw. für die zweite logische CPU in einem System, etwa in Systemen mit Hyper-Threading-Technologie von Intel, die mehrere logische Kerne nutzen.
Wobei ich jetzt mangels HT-Prozessor nicht weiß, ob bei einem Quadcore die Werte in abwechselnder Reihenfolge (physisch, logisch, physisch, logisch...) oder hintereinander (physisch, physisch..., logisch, logisch...) stehen und welche Werte man da bei den logischen Prozessoren auslesen kann.
Zum auslesen der Anzahl der logischen Prozessoren würde aber die einfache Zählschleife ausreichen.
Mir würde für SIC2 einfach ein HT = 0/1 reichen!
Danke,
UEZ
Die Anzahl der Kerne lässt sich auch so bestimmen:
[autoit]Func GetCPUCores()
Local $S_SYSTEM_INFO = DllStructCreate("ushort dwOemId;short wProcessorArchitecture;dword dwPageSize;ptr lpMinimumApplicationAddress;" & _
"ptr lpMaximumApplicationAddress;long_ptr dwActiveProcessorMask;dword dwNumberOfProcessors;dword dwProcessorType;dword dwAllocationGranularity;" & _
"short wProcessorLevel;short wProcessorRevision")
Local $err
;Anzahl der CPUs bestimmen
$err = DllCall("Kernel32.dll", "none", "GetSystemInfo", "ptr",DllStructGetPtr($S_SYSTEM_INFO))
If @error Or Not IsArray($err) Then ;Fehler beim Dll Aufruf
Return -1
Else
Return DllStructGetData($S_SYSTEM_INFO, "dwNumberOfProcessors")
EndIf
EndFunc
[/autoit]Hab damit schnell mal meinen freund ertappt der meinte das er 8 GB arbeitspeicher hat xD
Coole Sache
Oscar?
Wäre es okay wenn ich die Infos mit in AskSystem einbaue?
Wäre eine geniale Ergänzung & wird auch hier kostenlos
veröffentlicht
Hi Oscar,
sehr nettes script, kann mich noch an die alte Version erinnern, da gefällt mir das auch schon viel besser =)
ne kleinigkeit vermisse ich noch, wäre es möglich noch USER und LOCALGROUPS einzubinden? also zumindest werlche user und gruppen es gibt?
PS: was mir noch auffällt, das jedes mal die tabs neu geladen werden, wenn ich dazwischen switche. ist doch (zumindest bei den meisten tabs) unnötig, da sich doch eh nix ändern kann, während das tool läuft, oder? (ausnahme wäre vllt laufwerke, wenn usb-stick/hdd drangestöpselt wird.
Ja, das Script bekommt noch ein paar Funktionen dazu. Das Ganze sollte ja flexibel und leicht erweiterbar sein, deshalb habe ich ja alles in Funktionen ausgelagert und mit TABs eingebunden.
Von daher sind Erweiterungen leichter machbar als vorher. Und ja, dass die Daten immer wieder neu geladen werden ist nicht zwingend nötig, aber bei den meisten Sachen braucht's ja nicht so lange.
Erstmal muss ich jetzt die GetMonitor-Funktion vervollständigen.
User und Localgroups habe ich mal auf die TODO-Liste gesetzt.
Sehr schönes Script und das mit der Erweiterung hört sich toll an
mfg Ubuntu
Ich weiß, dass man ab Vista die Anzahl der Cores expliziet herauslesen kann (NumberOfCores / NumberOfLogicalProcessors in Win32_Processor), aber ich suche nach einer Möglichkeit für System kleiner Vista / Server2008.
Teilweise scheint das auch bei XP zu gehen. Zu mindestens bei mir gibt es diese Variable. Bei anderen wieder nicht. Vielleicht liegt es an SP3 oder einem anderen Update. Wenn es diese Variable allerdings dann nicht gibt stürzt mein Script ab. Weiß jemand wie ich vorher prüfen kann ob es NumberOfLogicalProcessors gibt?
Find das ding echt klasse mus ich gleich meiner mutter geben damit sie mich nicht immer fragt wieviel arbeitsspeicher hab ich etc.
Hallo
Ist jetzt zwar schon ein Weilchen her mit dem Script, aber aktuell und benutzt wird es immernoch.
Wie kann man denn noch die "Anzahl der Kerne" von Bitboy einbauen, dass es mit aufgeführt wird?
Ich habe es so funktioniert, aber geht noch nicht:
Func GetCPUCores()
Local $S_SYSTEM_INFO = DllStructCreate("ushort dwOemId;short wProcessorArchitecture;dword dwPageSize;ptr lpMinimumApplicationAddress;" & _
"ptr lpMaximumApplicationAddress;long_ptr dwActiveProcessorMask;dword dwNumberOfProcessors;dword dwProcessorType;dword dwAllocationGranularity;" & _
"short wProcessorLevel;short wProcessorRevision")
Local $err
;Anzahl der CPUs bestimmen
$err = DllCall("Kernel32.dll", "none", "GetSystemInfo", "ptr", DllStructGetPtr($S_SYSTEM_INFO))
If @error Or Not IsArray($err) Then ;Fehler beim Dll Aufruf
Return -1
Else
Return DllStructGetData($S_SYSTEM_INFO, "dwNumberOfProcessors")
EndIf
EndFunc ;==>GetCPUCores
[/autoit] [autoit][/autoit] [autoit]$sOut = 'Kerne: ' & GetCPUCores
[/autoit] [autoit][/autoit] [autoit]MsgBox(64, 'CPU-Kerne', $sOut)
[/autoit]$sOut = 'Kerne: ' & GetCPUCores()
lediglich die klammern am ende wurden vergessen dann klappt es wieder.
Grüße
Pre
Also mit der Registry Geschichte,
Ises bei mir so das der bei Senctral Prozessor von 0-3 durchgeht.
Jedoch erkenn ich grad bei überfliegen nicht das der zwischen Virtuell und Physikalisch unterscheidet.
Ich hab ein Q6600 müsste ja ein zweikerner mit HT sein
moin moin, echt cooles ding
Aber mir is was aufgefallen und ich weiss nicht ob es ein fehler ist
autoit.de/wcf/attachment/12915/
Bezeichnung: PCIEX16
Steckblatz belegt: Nein
max. Datenbreite: 8192 Bits
Also ich weiss ja nicht wie ihr das seht, aber da sollte doch Eigentlich statt Nein - Ja sein. Hab eigentlich ne GraKa drin (XFX ATI HD 4870 (RV770)) Falls es keni fehler ist. Ignoriert das einfach