Systemkomponenten

  • hai,
    gibt es eine Möglichkeit mit Autoit die Systemkomponenten einen PC's herauszufinden?


    mfg halloman

  • das is mir zu kompliziert oscar...
    gibt es da was einfacheres?^^
    brauche nur den Takt der CPU, GPU RAM und wie viel Arbeitsspeicher

  • Zitat

    das is mir zu kompliziert oscar...

    wenn schon ein FERTIGES und vor allen Dingen funktionierendes Script gepostet wird, dann sollte ein Threadersteller zumindest in der Lage sein, die für ihn wichtigen Funktionen einfach herauszukopieren...Oder erwartest du, dass man dir ein fertiges Script schreibt?

    Zitat

    gibt es eine Möglichkeit mit Autoit die Systemkomponenten einen PC's herauszufinden

    JA! AutoIt-Script-O-Matic...da bekommt man sogar fertige Scripte mit nur 2-3 Mausklicks...oder ist auch das "zu kompliziert"?

  • warum machst du mich gleich so an...ich erwarte natürlich nicht das mir jmd ein fertiges script schreibt
    danke ich schaue mir das mal an

    • Offizieller Beitrag

    Andy: Nicht gleich so streng sein. Er ist doch noch neu und mein Script ist auch nicht soo übersichtlich.

    @halloman: Weil heute Sonntag ist, bekommst Du ein fertiges Script. ;)

    Spoiler anzeigen
    [autoit]


    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = 'localhost'

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output &= 'Computer: ' & $strComputer & @CRLF
    $Output &= '==========================================' & @CRLF
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
    Global $CurrentClockSpeed, $MaxClockSpeed, $GPUAdapterRAM, $TotalRAM, $sOut

    [/autoit] [autoit][/autoit] [autoit]

    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) then
    For $objItem In $colItems
    $CurrentClockSpeed = $objItem.CurrentClockSpeed
    $MaxClockSpeed = $objItem.MaxClockSpeed
    Next
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_VideoController', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) then
    For $objItem In $colItems
    $GPUAdapterRAM = $objItem.AdapterRAM
    Next
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    $TotalRAM = MemGetStats()

    [/autoit] [autoit][/autoit] [autoit]

    $sOut = 'CPU = ' & $CurrentClockSpeed & ' Hz (max. ' & $MaxClockSpeed & ' Hz)' & @CR
    $sOut &= 'GPU-RAM = ' & _ByteAutoSize($GPUAdapterRAM, 0) & @CR
    $sOut &= 'RAM = ' & _ByteAutoSize($TotalRAM[1] * 1024, 0)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, 'Ergebnis', $sOut)

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _ByteAutoSize($iSize[, $iRound][, $iFormat][, $bThousands])
    ; Description:: Gibt einen Bytewert in einer bestimmten Einheit zurück
    ; Parameter(s): $iSize = Größe in Byte übergeben
    ; $iRound = Anzahl der Nachkommastellen (0...8)
    ; $iFormat = bestimmt den Rückgabewert
    ; 0 = Automatisch (je nach übergebenen Wert)
    ; 1 = in Byte
    ; 2 = in KByte
    ; 3 = in MByte
    ; 4 = in GByte
    ; $bThousands = Rückgabe mit Tausendertrennzeichen (True/False)
    ; Requirement(s): #include <String.au3>
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _ByteAutoSize($iSize, $iRound = 2, $iFormat = 0, $bThousands = True)
    Local $aSize[4] = [' Byte', ' KByte', ' MByte', ' GByte'], $sReturn
    If $iFormat < 0 Or $iFormat > 4 Then $iFormat = 0
    If $iRound < 0 Or $iRound > 8 Then $iRound = 2
    If Not IsBool($bThousands) Then $bThousands = False
    $iSize = Abs($iSize)
    If $iFormat = 0 Then
    For $i = 30 To 0 Step -10
    If $iSize > (2 ^ $i) Then
    $iFormat = $i / 10 + 1
    ExitLoop
    EndIf
    Next
    EndIf
    If $iFormat = 0 Then $iFormat = 1
    $sReturn = StringFormat('%.' & $iRound & 'f', Round($iSize / (2 ^ (($iFormat - 1) * 10)), $iRound))
    If $bThousands Then $sReturn = _StringAddThousandsSep($sReturn, '.', ',')
    Return $sReturn & $aSize[$iFormat - 1]
    EndFunc ;==>_ByteAutoSize

    [/autoit] [autoit][/autoit] [autoit]

    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    ;~ Local $aNumber = StringRegExp($sString, "(\d+)\D?(\d*)", 1)
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    ;~ $sResult = StringTrimLeft($sResult, 1) ; Strip leading thousands separator
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]
  • Zitat

    danke ich schaue mir das mal an

    @Oscar...genau das meinte ich...auf einmal gehts, man beachte die Reihenfolge der Postings :rofl:

    Zitat

    warum machst du mich gleich so an

    das kann ich dir genau erklären: Du fragst in deinem Startpost nach einer "Möglichkeit mit Autoit die Systemkomponenten einen PC's herauszufinden". Du warst nicht in der Lage, das was du wirklich wolltest, nämlich "brauche nur den Takt der CPU, GPU RAM und wie viel Arbeitsspeicher" im ersten Post unterzubringen. Sollen wir das aus unserer Glaskugel lesen?
    Weiterhin hast du nicht beschrieben, wo du schon gesucht, bzw. was du zu diesem Thema schon gefunden, aber nicht verstanden hast!
    Selbst in der von mir nicht geliebten Forensuche findet man z.B. mit den Suchbegriffen "Taktfrequenz Prozessor" rechlich Threads zum Thema. Auch Fehlanzeige....
    Für mich ist all das ein Hinweis darauf, daß dir mal jemand "den Arm aus der Sonne legen soll...". Was in dem Fall auch (dank eines gutmütigen Forenmitglieds) hervorragend geklappt hat!

    • Offizieller Beitrag

    Andy, im Prinzip gebe ich Dir ja recht, aber die WMI-Abfragen zu verstehen ist als Anfänger nicht so einfach.
    Und wenn man dann als Neuling sowas aus einem Script "rauslesen" soll, kann das schon eine Nummer zu groß sein.
    Da finde ich die Fragen, die man allein durch lesen der Hilfe hätte lösen können, viel schlimmer.
    Letztendlich helfen wir doch gern (sonst wären wir nicht hier) und außerdem habe ich heute gute Laune. :)