Inforamtionen über PC abfragen

  • Hallo zusammen,

    mich würde mal interessieren, ob und wie es möglich ist, folgende Informationen über meinen PC herauszufinden.

    Code
    Speicherplatz jeder Festplatte: ?
    Freier Speicherplatz jeder Festplatte: ? 
    Arbeitsspeichergröße: ?
    CPU Takt: ?
    Auslastung RAM: ?
    CPU Auslastung: ?

    was ich nicht ganz verstanden habe ist folgender paramter:

    [autoit]


    @NumParams

    [/autoit]

    was soll der denn genau machen?
    Sollen das die Commandline paramter sein, die man dem script übergibt?

    gruß anno

    2 Mal editiert, zuletzt von anno (20. Februar 2009 um 22:28)

  • @NumParams verwendest du in Funktionen, damit du weißt, wieviele Parameter der Funktion übergeben wurden.

    Beispiel aus der Misc.au3

    _MouseTrap
    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _MouseTrap
    ; Description ...: Confine the Mouse Cursor to specified coords.
    ; Syntax.........: _MouseTrap([$iLeft = 0[, $iTop = 0[, $iRight = 0[, $iBottom = 0]]]])
    ; Parameters ....: $iLeft - Left coord
    ; $iTop - Top coord
    ; $iRight - Right coord
    ; $iBottom - Bottom coord
    ; Return values .: Success - True
    ; Failure - False
    ; Author ........: Gary Frost (gafrost)
    ; Modified.......:
    ; Remarks .......: Use _MouseTrap() with no params to release the Mouse Cursor
    ; Related .......:
    ; Link ..........;
    ; Example .......; Yes
    ; ===============================================================================================================================
    Func _MouseTrap($iLeft = 0, $iTop = 0, $iRight = 0, $iBottom = 0)
    Local $iResult, $tRect
    If @NumParams == 0 Then
    $iResult = DllCall("user32.dll", "int", "ClipCursor", "int", 0)
    Else
    If @NumParams == 2 Then
    $iRight = $iLeft + 1
    $iBottom = $iTop + 1
    EndIf
    $tRect = DllStructCreate($tagRect)
    If @error Then Return 0
    DllStructSetData($tRect, "Left", $iLeft)
    DllStructSetData($tRect, "Top", $iTop)
    DllStructSetData($tRect, "Right", $iRight)
    DllStructSetData($tRect, "Bottom", $iBottom)
    $iResult = DllCall("user32.dll", "int", "ClipCursor", "ptr", DllStructGetPtr($tRect))
    EndIf
    Return $iResult[0] <> 0
    EndFunc ;==>_MouseTrap

    [/autoit]
  • ich weiß jetzt ja nicht ob das ein fehler ist, aber bei mir tauchen in meiner VM (Virtualbox) meine C: Platte, Diskettenlaufwerk und CD Laufwerk als logisches laufwerk auf.

    Dann habe ich mla noch probiert direkt aus der Anweisung "SELECT * FROM Win32_DiskDrive" den verbrauchten Speicherplatz einer Festplatte herauszufinden. Da bekam ich allerdings einen fehler.

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

    GUICtrlSetData($Edit, ' Bitte warten...' & @CRLF & @CRLF & ' Win32_DiskDrive')
    $Output &= @CRLF & 'Festplatte(n) ' & @CRLF
    $Output &= '==============================================================' & @CRLF
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $Output &= 'Bezeichnung: ' & @TAB & $objItem.Model & @CRLF
    $Output &= 'Größe: ' & @TAB & _DisplayMemorySize($objItem.Size / 1024) & @CRLF
    $Output &= 'Frei: ' & @TAB & _DisplayMemorySize($objItem.FreeSpace / 1024) & @CRLF
    $Output &= 'Anschluss: ' & @TAB & $objItem.InterfaceType & @CRLF
    $Output &= 'Bytes/Sektor:' & @TAB & $objItem.BytesPerSector & @CRLF
    $Output &= 'PNPDeviceID: ' & @TAB & $objItem.PNPDeviceID & @CRLF
    $Output &= 'Status: ' & @TAB & $objItem.Status & @CRLF & @CRLF
    Next
    Else
    $Output &= 'No WMI Objects Found for class: Win32_DiskDrive' & @CRLF & @CRLF
    EndIf

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

    wie kann ich denn bei deinem script die aktuelle Systemzeit mit der Startzeit subtrahieren um die Laufzeit herauszubekommen? am beten als array.

    Einmal editiert, zuletzt von anno (21. Februar 2009 um 01:08)

  • Laufzeit bekommst du mit TimerDiff(0) und _TicksToTime:

    [autoit]

    #include<Date.au3>
    Local $H,$m,$s
    _TicksToTime(TimerDiff(0),$H,$m,$s)
    MsgBox(0, '', $H & ":" & $m & ":" & $s)

    [/autoit]