• Hallo,

    Finde super, dass du den Task Manager noch ausgebaut hast.

    Leider wird bei mir die Auslastung der CPU nicht richtig angezeigt bzw. nicht alle Kerne.
    Ich besitze einen Intel Core i7 (insgesamt 8 Kerne), aber bei Leistung wird mir nur die Auslastung des ersten und des achten Kern's angezeigt, ist das so gewollt?

    Lg, Fabian

  • Hi Fabian!

    Nein war es nicht, habe vergessen :rolleyes: !
    Das hat noch gefehlt, ich weiss nicht gnau ob das mit den abständen so geht TESTE mal! ^^

    [autoit]

    Switch UBound($aCPU) - 1
    Case 6
    $laenge += 150
    Case 8
    $laenge += 250
    EndSwitch
    GUICreate('Leistung', $laenge, 460, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)
    For $i = 0 To UBound($aCPU) - 2
    If $i > 0 Then $Set_Prog = 70 * $i
    $core[$i] = GUICtrlCreateProgress(50 + $Set_Prog, 65, 60, 160, $PBS_VERTICAL)
    $P_core[$i] = GUICtrlCreateLabel('', 50 + $Set_Prog, 230, 50, 20, $SS_CENTER)
    $l_core[$i] = GUICtrlCreateLabel('CPU ' & $i + 1, 50 + $Set_Prog, 45, 50, 20, $SS_CENTER)
    Next
    ..................

    [/autoit]

    Edit:/ ist schon geUpdatet :rolleyes: Post#1

    LG Kleiner

  • Hallo,

    Jetzt werden alle 8 Kerne angezeigt und es sieht auch optisch schön aus mit den Abständen.

    Lg, Fabian

  • Hi!


    @Fabian 
    Schön das es dir gefället!
    Habe gerade die X82 version hangehängt denn in der X64 Funktioniert die Sortierung nicht!

    Weis ein zufällig warum dieser Dll aufruf bei X64 nicht Funktioniert besser gesagt warum hir nur -1 wiedergegeben wird?

    [autoit]

    DllStructGetData(DllStructCreate($tagNMLISTVIEW_0, $ilParam), 'SubItem')

    [/autoit]

    LG KLeiner

  • Vlt ganz gut falls du dir was abgucken willst.
    Sind noch ein paar praktische/mächtige Funktionen drin:

    Spoiler anzeigen
    [autoit]

    ;==============================================================
    ; AskSystem
    ;==============================================================
    ; Author: Sen
    $Version = "1.8 Beta"
    $Date = "1.10.2010"
    ;==============================================================
    ; Credits:
    ; Oscar - System Info Functions
    ; GTA-Spider - ProcessPath / Hwnd Function
    ; SEuBo - Assemble AskSystem with Oscar's Functions
    ; Xenobiologist - _DecodeProduktKey
    ; Prog@ndy - Dll Call for reading GetLocaleInfo
    ;==============================================================
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #include <Date.au3>
    #include <Inet.au3>
    #include <Constants.au3>
    #include <StaticConstants.au3>
    #include <GuiStatusBar.au3>
    #include <WindowsConstants.au3>
    #include <TabConstants.au3>

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

    Dim $Tab[17]
    Dim $List[17]
    Local $Load

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

    If @OSType <> 'WIN32_NT' Then
    MsgBox(48, "AskSystem - Error", "AskSystem funktioniert erst ab Windows 2000")
    Exit
    EndIf

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

    #region GUI
    $Main = GUICreate("AskSystem", 600, 400, -1, -1, $WS_THICKFRAME)

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

    ;Tab Menü
    $Tab[0] = GUICtrlCreateTab(0, 0, 600, 400)
    GUICtrlSetResizing($Tab[0], $GUI_DOCKAUTO)
    $Tab_Con = GUICtrlCreateContextMenu($Tab[0])
    $Con_Refresh = GUICtrlCreateMenuItem("Refresh All", $Tab_Con)
    $Con_LogAll = GUICtrlCreateMenuItem("Log all", $Tab_Con)

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

    #region Tab - Manager
    $Tab[1] = GUICtrlCreateTabItem("Manager")

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

    ;ProzessListe - Process
    $List[0] = GUICtrlCreateListView("Process|PID|Path|Title|Hwnd|Read|Write|Transfer|I/O", 0, 25, 600, 240)
    _GUICtrlListView_RegisterSortCallBack($List[0])
    _GUICtrlListView_SetColumnWidth($List[0], 0, 150)
    _GUICtrlListView_SetColumnWidth($List[0], 1, 50)
    _GUICtrlListView_SetColumnWidth($List[0], 2, 150)
    _GUICtrlListView_SetColumnWidth($List[0], 3, 100)
    _GUICtrlListView_SetColumnWidth($List[0], 4, 100)
    _GUICtrlListView_SetColumnWidth($List[0], 5, 100)

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

    ;ProzessListe - Drives
    $List[1] = GUICtrlCreateListView("Label|System|Serial|Type|Free|Total", 0, 265, 600, 135)
    _GUICtrlListView_RegisterSortCallBack($List[1])
    _GUICtrlListView_SetColumnWidth($List[1], 0, 120)
    _GUICtrlListView_SetColumnWidth($List[1], 1, 70)
    _GUICtrlListView_SetColumnWidth($List[1], 2, 100)
    _GUICtrlListView_SetColumnWidth($List[1], 3, 80)
    _GUICtrlListView_SetColumnWidth($List[1], 4, 100)
    _GUICtrlListView_SetColumnWidth($List[1], 5, 100)

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

    ;Context Menü Process
    $ContextP = GUICtrlCreateContextMenu($List[0])
    $ProcessKill = GUICtrlCreateMenuItem("Kill Process", $ContextP)
    $ProcessFreeze = GUICtrlCreateMenuItem("Suspend Process", $ContextP)
    $ProcessUnFreeze = GUICtrlCreateMenuItem("Resume Process", $ContextP)
    $RefreshP = GUICtrlCreateMenuItem("Refresh", $ContextP)
    $CopyInfoP = GUICtrlCreateMenuItem("Copy to Clipboard", $ContextP)
    $SaveLogP = GUICtrlCreateMenuItem("Save Process Log", $ContextP)

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

    ;Context Menü Drives
    $ContextD = GUICtrlCreateContextMenu($List[1])
    $RefreshD = GUICtrlCreateMenuItem("Refresh", $ContextD)
    $CopyInfoD = GUICtrlCreateMenuItem("Copy to Clipboard", $ContextD)
    $SaveLogD = GUICtrlCreateMenuItem("Save Drive Log", $ContextD)
    #endregion Tab - Manager

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

    #region Tab - Windows
    $Tab[2] = GUICtrlCreateTabItem("Windows")
    $List[2] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Windows

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

    #region Tab - Drives
    $Tab[3] = GUICtrlCreateTabItem("Drives")
    $List[3] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Drives

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

    #region Tab - Harddisks
    $Tab[4] = GUICtrlCreateTabItem("Harddisks")
    $List[4] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Harddisks

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

    #region Tab - Cd-Rom
    $Tab[5] = GUICtrlCreateTabItem("Cd-Rom")
    $List[5] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Cd-Rom

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

    #region Tab - Network
    $Tab[6] = GUICtrlCreateTabItem("Network")
    $List[6] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Network

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

    #region Tab - Networkadapter
    $Tab[7] = GUICtrlCreateTabItem("NetworkAdapter")
    $List[7] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Networkadapter

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

    #region Tab - Processor
    $Tab[8] = GUICtrlCreateTabItem("CPU")
    $List[8] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Processor

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

    #region Tab - RAM
    $Tab[9] = GUICtrlCreateTabItem("RAM")
    $List[9] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - RAM

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

    #region Tab - Graphiccard
    $Tab[10] = GUICtrlCreateTabItem("Graphiccard")
    $List[10] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Graphiccard

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

    #region Tab - Monitor
    $Tab[11] = GUICtrlCreateTabItem("Monitor")
    $List[11] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Monitor

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

    #region Tab - Printer
    $Tab[12] = GUICtrlCreateTabItem("Printer")
    $List[12] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Printer

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

    #region Tab - Soundcard
    $Tab[13] = GUICtrlCreateTabItem("Soundcard")
    $List[13] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Soundcard

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

    #region Tab - Mainboard
    $Tab[14] = GUICtrlCreateTabItem("Mainboard")
    $List[14] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Mainboard

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

    #region Tab - Sockets
    $Tab[15] = GUICtrlCreateTabItem("Sockets")
    $List[15] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    #endregion Tab - Sockets

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

    #region Tab - Info
    $Tab[16] = GUICtrlCreateTabItem("Info")
    $List[16] = GUICtrlCreateListView("||", 0, 25, 600, 375)
    _GUICtrlListView_SetColumnWidth($List[16], 0, 160)
    _GUICtrlListView_SetColumnWidth($List[16], 1, 440)
    _FillInfo()
    #endregion Tab - Info

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

    ;GUI Settings
    WinRunTrans($Main, "Show")
    #endregion GUI

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

    #region StartUp
    TrayTip("AskSystem", "System is loading..", 1)
    FillProcess()
    FillDrives()
    FillTabs()
    TrayTip("AskSystem", "Loading done.", 1)
    #endregion StartUp

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

    #region Case's
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Con_Refresh
    TrayTip("AskSystem", "Starting update..", 1)
    For $i = "3" To "15"
    _GUICtrlListView_DeleteAllItems($List[$i])
    Next
    FillTabs()
    TrayTip("AskSystem", "Update done.", 1)
    Case $Con_LogAll
    TrayTip("AskSystem", "Creating Logfile..", 1)
    AllLog()
    TrayTip("AskSystem", "Logfile done.", 1)
    Case $RefreshP
    FillProcess()
    Case $RefreshD
    FillDrives()
    Case $SaveLogP
    ProcessLog()
    Case $SaveLogD
    DriveLog()
    Case $CopyInfoP
    CopyToClipBoardP()
    Case $CopyInfoD
    CopyToClipBoardD()
    Case $List[0]
    _GUICtrlListView_SortItems($List[0], GUICtrlGetState($List[0]))
    Case $List[1]
    _GUICtrlListView_SortItems($List[1], GUICtrlGetState($List[1]))
    Case $ProcessKill
    KillProcess()
    Case $ProcessFreeze
    FreezeProcess()
    Case $ProcessUnFreeze
    UnFreezeProcess()
    EndSwitch
    WEnd
    #endregion Case's

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

    #region Func's
    Func OnAutoItExit()
    WinRunTrans($Main, "Hide")
    _GUICtrlListView_UnRegisterSortCallBack($List[0])
    _GUICtrlListView_UnRegisterSortCallBack($List[1])
    EndFunc ;==>OnAutoItExit

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

    Func _FillInfo()
    GUICtrlCreateListViewItem("Programm Name:|AskSystem", $List[16])
    GUICtrlCreateListViewItem("Version:|" & $Version, $List[16])
    GUICtrlCreateListViewItem("Date:|" & $Date, $List[16])
    GUICtrlCreateListViewItem("|", $List[16])
    GUICtrlCreateListViewItem("Coder:|Sen (Christopher Klay)", $List[16])
    GUICtrlCreateListViewItem("|", $List[16])
    GUICtrlCreateListViewItem("Credits:|Xenobiologist (Thorsten Meger) - _DecodeProduktKey Function", $List[16])
    GUICtrlCreateListViewItem("|Prog@ndy - Dll Call for reading GetLocaleInfo", $List[16])
    GUICtrlCreateListViewItem("|SEuBo - Assemble AskSystem 1.6 with the new Func's from Oscar ", $List[16])
    GUICtrlCreateListViewItem("|Oscar - System Info Functions", $List[16])
    GUICtrlCreateListViewItem("|GTASpider - ProcessPath & Hwnd Info Function", $List[16])
    GUICtrlCreateListViewItem("|", $List[16])
    GUICtrlCreateListViewItem("|Thanks to everyone for testing, bug reporting", $List[16])
    GUICtrlCreateListViewItem("|and good criticism.", $List[16])
    GUICtrlCreateListViewItem("|", $List[16])
    GUICtrlCreateListViewItem("Changelog:|- 1.8 Beta -", $List[16])
    GUICtrlCreateListViewItem("|- Can now suspend/resume process's", $List[16])
    GUICtrlCreateListViewItem("|- Changed 2 small Bugs", $List[16])
    EndFunc ;==>_FillInfo

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

    Func KillProcess()
    $ClickedItem = GUICtrlRead($List[0])
    If $ClickedItem > 0 Then
    $Read = GUICtrlRead($ClickedItem)
    $Read = StringSplit($Read, "|")
    If ProcessExists($Read[1]) <> "0" Then
    Do
    ProcessClose($Read[1])
    Until ProcessExists($Read[1]) = "0"
    _GUICtrlListView_DeleteItemsSelected($List[0])
    FillProcess()
    EndIf
    EndIf
    EndFunc ;==>KillProcess

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

    Func FreezeProcess()
    $ClickedItem = GUICtrlRead($List[0])
    If $ClickedItem > 0 Then
    $Read = GUICtrlRead($ClickedItem)
    $Read = StringSplit($Read, "|")
    If ProcessExists($Read[1]) <> "0" Then
    _ProcessSuspend($Read[1])
    EndIf
    EndIf
    EndFunc ;==>FreezeProcess

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

    Func UnFreezeProcess()
    $ClickedItem = GUICtrlRead($List[0])
    If $ClickedItem > 0 Then
    $Read = GUICtrlRead($ClickedItem)
    $Read = StringSplit($Read, "|")
    If ProcessExists($Read[1]) <> "0" Then
    _ProcessResume($Read[1])
    EndIf
    EndIf
    EndFunc ;==>UnFreezeProcess

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

    Func CopyToClipBoardP()
    $ClickedItem = GUICtrlRead($List[0])
    If $ClickedItem > 0 Then
    $Read = GUICtrlRead($ClickedItem)
    ClipPut($Read)
    EndIf
    EndFunc ;==>CopyToClipBoardP

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

    Func CopyToClipBoardD()
    $ClickedItem = GUICtrlRead($List[1])
    If $ClickedItem > 0 Then
    $Read = GUICtrlRead($ClickedItem)
    ClipPut($Read)
    EndIf
    EndFunc ;==>CopyToClipBoardD

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

    Func ProcessLog()
    _GUICtrlListView_BeginUpdate($List[0])
    If FileExists(@DesktopCommonDir & "/AskProcess - Process.txt") = "0" Then
    FileWrite(@DesktopCommonDir & "/AskProcess - Process.txt", "")
    EndIf
    $ListLines = _GUICtrlListView_GetItemCount($List[0])
    $LogFile = FileOpen(@DesktopCommonDir & "/AskProcess - Process.txt", 2)
    If $LogFile <> -1 Then
    For $i = 0 To $ListLines
    $LogLine = _GUICtrlListView_GetItemTextString($List[0], $i)
    FileWriteLine(@DesktopCommonDir & "/AskProcess - Process.txt", $LogLine)
    Next
    EndIf
    FileClose(@DesktopCommonDir & "/AskProcess - Process.txt")
    _GUICtrlListView_EndUpdate($List[0])
    EndFunc ;==>ProcessLog

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

    Func DriveLog()
    _GUICtrlListView_BeginUpdate($List[1])
    If FileExists(@DesktopCommonDir & "/AskProcess - Drives.txt") = "0" Then
    FileWrite(@DesktopCommonDir & "/AskProcess - Drives.txt", "")
    EndIf
    $ListLines = _GUICtrlListView_GetItemCount($List[1])
    $LogFile = FileOpen(@DesktopCommonDir & "/AskProcess - Drives.txt", 2)
    If $LogFile <> -1 Then
    For $i = 0 To $ListLines
    $LogLine = _GUICtrlListView_GetItemTextString($List[1], $i)
    FileWriteLine(@DesktopCommonDir & "/AskProcess - Drives.txt", $LogLine)
    Next
    EndIf
    FileClose(@DesktopCommonDir & "/AskProcess - Drives.txt")
    _GUICtrlListView_EndUpdate($List[1])
    EndFunc ;==>DriveLog

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

    Func AllLog()
    For $i = "0" To "15"
    _GUICtrlListView_BeginUpdate($List[$i])
    Next
    If FileExists(@DesktopCommonDir & "/AskProcess - Complete Log.txt") = "0" Then
    FileWrite(@DesktopCommonDir & "/AskProcess - Complete Log.txt", "")
    EndIf

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

    $LogFile = FileOpen(@DesktopCommonDir & "/AskProcess - Complete Log.txt", 2)

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

    For $l = "0" To "15"
    $ListLines = _GUICtrlListView_GetItemCount($List[$l])
    If $LogFile <> -1 Then
    For $i = 0 To $ListLines
    $LogLine = _GUICtrlListView_GetItemTextString($List[$l], $i)
    $LogLine = StringReplace($LogLine, "|", " ")
    FileWriteLine(@DesktopCommonDir & "/AskProcess - Complete Log.txt", $LogLine)
    Next
    EndIf

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

    FileClose(@DesktopCommonDir & "/AskProcess - Complete Log.txt")

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

    For $i = "0" To "15"
    _GUICtrlListView_EndUpdate($List[$l])
    Next
    Next
    EndFunc ;==>AllLog

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

    Func FillDrives()
    _GUICtrlListView_BeginUpdate($List[1])
    _GUICtrlListView_DeleteAllItems($List[1])
    $Drives = DriveGetDrive("ALL")
    For $i = "1" To $Drives[0]
    $Name = DriveGetLabel($Drives[$i])
    $Type = DriveGetType($Drives[$i])
    $Serial = DriveGetSerial($Drives[$i])
    $System = DriveGetFileSystem($Drives[$i])
    $Free = Round(DriveSpaceFree($Drives[$i]) / 1000, 2) & "Gb"
    $Total = Round(DriveSpaceTotal($Drives[$i]) / 1000, 2) & "Gb"
    GUICtrlCreateListViewItem($Name & "|" & $System & "|" & $Serial & "|" & $Type & "|" & $Free & "|" & $Total, $List[1])
    Next
    _GUICtrlListView_EndUpdate($List[1])
    EndFunc ;==>FillDrives

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

    Func FillProcess()
    _GUICtrlListView_BeginUpdate($List[0])
    _GUICtrlListView_DeleteAllItems($List[0])
    $Process_List = ProcessList()
    $ReadAll = "0"
    $WriteAll = "0"
    For $i = 2 To $Process_List[0][0]
    $Stats = ProcessGetStats($Process_List[$i][0], 1)
    $Path = _PidGetPath($Process_List[$i][1])
    If IsArray($Stats) Then
    $ReadAll = $ReadAll + $Stats[3]
    $WriteAll = $WriteAll + $Stats[4]
    EndIf
    If $Path = "0" Then
    $Path = "-"
    EndIf
    $Title = _WinGetInfoByPID($Process_List[$i][1])
    If IsArray($Title) Then
    If IsArray($Stats) Then
    GUICtrlCreateListViewItem($Process_List[$i][0] & "|" & $Process_List[$i][1] & "|" & $Path & "|" & $Title[1][1] & "|" & $Title[1][2] & "|" & $Stats[3] * 1000 & "|" & $Stats[4] * 1000 & "|" & $Stats[5] * 1000 & "|" & $Stats[2], $List[0])
    Else
    GUICtrlCreateListViewItem($Process_List[$i][0] & "|" & $Process_List[$i][1] & "|" & $Path & "|" & $Title[1][1] & "|" & $Title[1][2] & "|-|-|-|-", $List[0])
    EndIf
    Else
    If IsArray($Stats) Then
    GUICtrlCreateListViewItem($Process_List[$i][0] & "|" & $Process_List[$i][1] & "|" & $Path & "|-|-|" & $Stats[3] * 1000 & "|" & $Stats[4] * 1000 & "|" & $Stats[5] * 1000 & "|" & $Stats[2], $List[0])
    Else
    GUICtrlCreateListViewItem($Process_List[$i][0] & "|" & $Process_List[$i][1] & "|" & $Path & "|-|-|-|-|-|-|-", $List[0])
    EndIf
    EndIf
    Next
    _GUICtrlListView_EndUpdate($List[0])
    EndFunc ;==>FillProcess

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

    Func FillTabs()
    ; Windows
    $aWMIINfo = _CI_GetWindowsInfo()
    $hLVHandle = GUICtrlGetHandle($List[2])
    _ArrayUmdrehen($aWMIINfo)
    For $i = 0 To UBound($aWMIINfo) - 1
    GUICtrlCreateListViewItem($aWMIINfo[$i][0] & "|" & $aWMIINfo[$i][1], $List[2])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ; Drives
    $aWMIINfo = _CI_GetLogicalDisk()
    $hLVHandle = GUICtrlGetHandle($List[3])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[3])
    Next
    GUICtrlCreateListViewItem("|", $List[3])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Harddrives
    $aWMIINfo = _CI_GetHarddrives()
    $hLVHandle = GUICtrlGetHandle($List[4])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[4])
    Next
    GUICtrlCreateListViewItem("|", $List[4])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Cd-Rom
    $aWMIINfo = _CI_GetCDROM()
    $hLVHandle = GUICtrlGetHandle($List[5])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[5])
    Next
    GUICtrlCreateListViewItem("|", $List[5])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Network
    $aWMIINfo = _CI_GetNetwork()
    $hLVHandle = GUICtrlGetHandle($List[6])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[6])
    Next
    GUICtrlCreateListViewItem("|", $List[6])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;NetworkAdapter
    $aWMIINfo = _CI_GetNetworkAdapter()
    $hLVHandle = GUICtrlGetHandle($List[7])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[7])
    Next
    GUICtrlCreateListViewItem("|", $List[7])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;CPU
    $aWMIINfo = _CI_GetCPU()
    $hLVHandle = GUICtrlGetHandle($List[8])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[8])
    Next
    GUICtrlCreateListViewItem("|", $List[8])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;RAM
    $aWMIINfo = _CI_GetRAM()
    $hLVHandle = GUICtrlGetHandle($List[9])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[9])
    Next
    GUICtrlCreateListViewItem("|", $List[9])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Graphiccard
    $aWMIINfo = _CI_GetVideoController()
    $hLVHandle = GUICtrlGetHandle($List[10])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[10])
    Next
    GUICtrlCreateListViewItem("|", $List[10])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Monitor
    $aWMIINfo = _CI_GetMonitor()
    $hLVHandle = GUICtrlGetHandle($List[11])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[11])
    Next
    GUICtrlCreateListViewItem("|", $List[11])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Printer
    $aWMIINfo = _CI_GetPrinter()
    $hLVHandle = GUICtrlGetHandle($List[12])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[12])
    Next
    GUICtrlCreateListViewItem("|", $List[12])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Soundcard
    $aWMIINfo = _CI_GetSoundDevice()
    $hLVHandle = GUICtrlGetHandle($List[13])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[13])
    Next
    GUICtrlCreateListViewItem("|", $List[13])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Mainboard
    $aWMIINfo = _CI_GetMainBoard()
    $hLVHandle = GUICtrlGetHandle($List[14])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[14])
    Next
    GUICtrlCreateListViewItem("|", $List[14])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)

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

    ;Sockel
    $aWMIINfo = _CI_GetSystemSlot()
    $hLVHandle = GUICtrlGetHandle($List[15])
    ;~ _ArrayUmdrehen($aWinInfo)
    For $x = 1 To UBound($aWMIINfo) - 1
    For $i = 0 To UBound($aWMIINfo, 2) - 1
    GUICtrlCreateListViewItem($aWMIINfo[0][$i] & "|" & $aWMIINfo[$x][$i], $List[15])
    Next
    GUICtrlCreateListViewItem("|", $List[15])
    Next
    _GUICtrlListView_SetColumnWidth($hLVHandle, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLVHandle, 1, $LVSCW_AUTOSIZE)
    EndFunc ;==>FillTabs

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

    Func _PidGetPath($pid = "", $strComputer = 'localhost')
    If $pid = "" Then $pid = WinGetProcess(WinGetTitle(""))
    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
    Next
    EndIf
    EndFunc ;==>_PidGetPath

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

    Func _CI_SerialToString($sSerial)
    Local $sOut = ''
    For $i = 1 To StringLen($sSerial) Step 2
    $sOut &= Chr(Dec(StringMid($sSerial, $i, 2)))
    Next
    Return $sOut
    EndFunc ;==>_CI_SerialToString

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

    Func _WinGetInfoByPID($sPID)
    Local $aPList = ProcessList(), $iPID
    For $iiCount = 1 To $aPList[0][0]
    If $aPList[$iiCount][1] = $sPID Then
    If $sPID = 0 Then Return 0
    $iPID &= $aPList[$iiCount][1] & Chr(01)
    EndIf
    Next
    $iPID = StringSplit($iPID, Chr(01))
    If $iPID = 0 Then Return SetError(1, 0, 0)
    Local $aStoreHwndAndText[2][9], $nCount = 1
    $OptWSC = Opt('WinSearchChildren', 1)
    $OptWDHT = Opt('WinDetectHiddenText', 1)
    Local $aWinList = WinList()
    For $iCount = 1 To $aWinList[0][0]
    For $xCount = 1 To $iPID[0]
    If WinGetProcess($aWinList[$iCount][1]) = $iPID[$xCount] And _
    $aWinList[$iCount][0] <> '' Then
    Local $aWinPos = WinGetPos($aWinList[$iCount][1])
    Local $aWinClient = WinGetClientSize($aWinList[$iCount][1])
    $nCount += 1
    ReDim $aStoreHwndAndText[$nCount][9]
    $aStoreHwndAndText[$nCount - 1][1] = $aWinList[$iCount][0]
    $aStoreHwndAndText[$nCount - 1][2] = $aWinList[$iCount][1]
    $aStoreHwndAndText[$nCount - 1][3] = WinGetText($aWinList[$iCount][1])
    $aStoreHwndAndText[$nCount - 1][4] = $aWinPos[0]
    $aStoreHwndAndText[$nCount - 1][5] = $aWinPos[1]
    $aStoreHwndAndText[$nCount - 1][6] = $aWinClient[0]
    $aStoreHwndAndText[$nCount - 1][7] = $aWinClient[1]
    $aStoreHwndAndText[$nCount - 1][8] = WinGetClassList($aWinList[$iCount][1])
    EndIf
    Next
    Next
    Opt('WinSearchChildren', $OptWSC)
    Opt('WinDetectHiddenText', $OptWDHT)
    If $nCount = 1 Then Return SetError(2, 0, 0)
    Return $aStoreHwndAndText
    EndFunc ;==>_WinGetInfoByPID

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

    Func _CI_GetWindowsInfo($strComputer = '.')
    Local $aReturn[2][17] = [[ _
    'Betriebssystem:', 'Version:', 'Sprachversion:', 'Tastatur:', 'Boot-Laufwerk:', 'Windows-Verzeichnis:', _
    'Speicherplatz:', 'Hauptspeicher:', 'Auslagerungsdatei:', 'Installationsdatum:', 'Zuletzt gestartet:', _
    'Heutiges Datum:', 'Benutzername:', 'Benutzerverzeichnis:', 'Produktkey:', 'Hintergrundbild:', 'Bildschirmschoner:']]
    Local $aTmp, $sOSLang = @OSLang, $sKBLayout = @KBLayout, $sDigitalProductID, $sWallpaper = 'Nicht vorhanden', $sScreenSaver = 'Nicht vorhanden'
    Local $x = 0, $objWMIService, $colItems, $aMemory = MemGetStats(), $sX64 = ''
    $aTmp = DllCall('kernel32.dll', 'int', 'GetLocaleInfo', 'dword', '0x' & $sOSLang, 'dword', BitOR(0x2, 0x80000000), 'str', '', 'int', 85)
    If IsArray($aTmp) Then $sOSLang = $aTmp[3]
    $aTmp = DllCall('kernel32.dll', 'int', 'GetLocaleInfo', 'dword', '0x' & $sKBLayout, 'dword', BitOR(0x2, 0x80000000), 'str', '', 'int', 85)
    If IsArray($aTmp) Then $sKBLayout = $aTmp[3]
    If @OSArch <> 'X86' Then $sX64 = '64'
    $sDigitalProductID = RegRead('HKEY_LOCAL_MACHINE' & $sX64 & '\SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DigitalProductID')
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Desktop', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If StringInStr($objItem.Name, @UserName) Then
    If $objItem.Wallpaper <> '' Then $sWallpaper = $objItem.Wallpaper
    If $objItem.ScreenSaverExecutable <> '' Then $sScreenSaver = $objItem.ScreenSaverExecutable
    EndIf
    Next
    EndIf
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $aReturn[1][0] = $objItem.Caption & ' (' & @OSArch & ')'
    $aReturn[1][1] = $objItem.Version
    $aReturn[1][2] = $sOSLang
    $aReturn[1][3] = $sKBLayout
    $aReturn[1][4] = $objItem.BootDevice
    $aReturn[1][5] = $objItem.WindowsDirectory
    $aReturn[1][6] = 'Laufwerk "' & $objItem.SystemDrive & '\" ' & _ByteAutoSize(DriveSpaceTotal($objItem.SystemDrive) * 2 ^ 20)
    $aReturn[1][6] &= ' (' & _ByteAutoSize(DriveSpaceFree($objItem.SystemDrive) * 2 ^ 20) & ' frei)'
    $aReturn[1][7] = _ByteAutoSize($aMemory[1] * 1024, 0, 3)
    $aReturn[1][8] = _ByteAutoSize($objItem.SizeStoredInPagingFiles * 1024, 0, 3)
    $aReturn[1][9] = _WMIDateStringToDate($objItem.InstallDate)
    $aReturn[1][10] = _WMIDateStringToDate($objItem.LastBootUpTime)
    $aReturn[1][11] = _NowCalc()
    $aReturn[1][12] = @UserName
    $aReturn[1][13] = @UserProfileDir
    $aReturn[1][14] = _DecodeProductKey($sDigitalProductID)
    $aReturn[1][15] = $sWallpaper
    $aReturn[1][16] = $sScreenSaver
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetWindowsInfo

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

    Func _CI_GetHarddrives($strComputer = '.')
    Local $aReturn[1][8] = [[ _
    'Bezeichnung:', 'Größe:', 'Anschluss:', 'Bytes/Sektor:', 'Anzahl der Sektoren:', _
    'PNPDeviceID:', 'Status:', 'Seriennr. (Hardware):']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][8]
    $aReturn[$x][0] = $objItem.Model
    $aReturn[$x][1] = _ByteAutoSize($objItem.Size)
    $aReturn[$x][2] = $objItem.InterfaceType
    $aReturn[$x][3] = $objItem.BytesPerSector
    $aReturn[$x][4] = $objItem.TotalSectors
    $aReturn[$x][5] = $objItem.PNPDeviceID
    $aReturn[$x][6] = $objItem.Status
    Switch @OSVersion
    Case 'WIN_VISTA', 'WIN_7'
    If Number($objItem.SerialNumber) > 0 Then
    $aReturn[$x][7] = $objItem.SerialNumber & ' ("' & _CI_SerialToString($objItem.SerialNumber) & '")'
    Else
    $aReturn[$x][7] = 'nicht vorhanden'
    EndIf
    Case Else
    $aReturn[$x][7] = 'Wird von ' & @OSVersion & ' nicht unterstützt!'
    EndSwitch
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetHarddrives

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

    Func _CI_GetLogicalDisk($strComputer = '.')
    Local $aReturn[1][9] = [[ _
    'Laufwerk:', 'Beschreibung:', 'Netzwerkpfad:', 'Zugriff:', 'Größe:', 'Freier Speicher:', _
    'Dateisystem:', 'Datenträgername:', 'Seriennr. (Datenträger):']]
    Local $x = 0, $objWMIService, $colItems, $aAccess[2] = ['R/W', 'R']
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_LogicalDisk', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][9]
    $aReturn[$x][0] = $objItem.Name
    $aReturn[$x][1] = $objItem.Description
    If $objItem.Description = 'Netzwerkverbindung' Then
    $aReturn[$x][2] = $objItem.ProviderName
    Else
    $aReturn[$x][2] = '---'
    EndIf
    If String($objItem.FileSystem) <> '' Then
    If String($objItem.Access) <> '' Then
    $aReturn[$x][3] = $aAccess[Number($objItem.Access)]
    Else
    $aReturn[$x][3] = 'nicht verfügbar'
    EndIf
    $aReturn[$x][4] = _ByteAutoSize($objItem.Size)
    $aReturn[$x][5] = _ByteAutoSize($objItem.FreeSpace)
    $aReturn[$x][6] = $objItem.FileSystem
    $aReturn[$x][7] = '"' & $objItem.VolumeName & '"'
    $aReturn[$x][8] = $objItem.VolumeSerialNumber
    EndIf
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetLogicalDisk

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

    Func _CI_GetCDROM($strComputer = '.')
    Local $aReturn[1][9] = [[ _
    'Laufwerk:', 'Bezeichnung:', 'Typ:', 'PNPDeviceID:', 'Laufwerk-Status:', _
    'Disc-Status:', 'Disc-Name:', 'Disc-Größe:', 'Seriennr. (Disc):']]
    Local $x = 0, $objWMIService, $colItems, $aMedia[2] = ['keine Disc eingelegt', 'Disc eingelegt']
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_CDROMDrive', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][9]
    $aReturn[$x][0] = $objItem.Drive
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.MediaType
    $aReturn[$x][3] = $objItem.PNPDeviceID
    $aReturn[$x][4] = $objItem.Status
    $aReturn[$x][5] = $aMedia[Abs($objItem.MediaLoaded)]
    If Abs($objItem.MediaLoaded) Then
    $aReturn[$x][6] = '"' & $objItem.VolumeName & '"'
    $aReturn[$x][7] = _ByteAutoSize($objItem.Size)
    $aReturn[$x][8] = $objItem.VolumeSerialNumber
    EndIf
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetCDROM

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

    Func _CI_GetNetwork($strComputer = '.')
    Local $aReturn[2][10] = [[ _
    'Benutzername:', 'Computername:', 'LAN-IP-Adresse:', 'DNS-Server:', 'Arbeitsgruppe:', _
    'WAN-IP-Adresse:', 'Ping-Zeiten:', ' google.de', ' heise.de', ' t-online.de']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $aReturn[1][0] = @UserName
    $aReturn[1][1] = @ComputerName
    $aReturn[1][2] = _CI_GetLANIP()
    $aReturn[1][3] = _CI_GetDNS()
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_ComputerSystem', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $aReturn[1][4] = $objItem.Domain
    $aReturn[1][5] = _GetIP()
    Next
    EndIf
    $aReturn[1][7] = _CI_PingCheck('google.de')
    $aReturn[1][8] = _CI_PingCheck('heise.de')
    $aReturn[1][9] = _CI_PingCheck('t-online.de')
    Return $aReturn
    EndFunc ;==>_CI_GetNetwork

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

    Func _CI_GetLANIP()
    Local $sPID = Run(@ComSpec & " /c ping -4 -n 1 " & @ComputerName, @SystemDir, @SW_HIDE, $STDOUT_CHILD)
    Local $sOut = ''
    While 1
    $sOut &= StdoutRead($sPID)
    If @error Then ExitLoop
    WEnd
    Return StringRegExpReplace($sOut, '(?s).+\[(.+)\].+', '$1')
    EndFunc ;==>_CI_GetLANIP

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

    Func _CI_GetDNS()
    Local $sPID = Run(@ComSpec & " /c nslookup " & @ComputerName, @SystemDir, @SW_HIDE, $STDOUT_CHILD)
    Local $sOut = ''
    While 1
    $sOut &= StdoutRead($sPID)
    If @error Then ExitLoop
    WEnd
    Return StringRegExpReplace($sOut, '(?s)Server:\h+(\S+).*?Address:\h+(\S+).*', '$2 ("$1")')
    EndFunc ;==>_CI_GetDNS

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

    Func _CI_PingCheck($sURL)
    Local $iRet, $aError[5] = ['', 'Computer ist offline', 'Computer ist nicht erreichbar', 'Falsche Adresse', 'Anderer Fehler']
    $iRet = Ping($sURL, 1000)
    If Not @error Then Return '~ ' & $iRet & ' ms'
    Return $aError[@error]
    EndFunc ;==>_CI_PingCheck

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

    Func _CI_GetNetworkAdapter($strComputer = '.')
    Local $aReturn[1][12] = [[ _
    'Hersteller:', 'Name:', 'Adapter-Typ:', 'Kennung:', _
    'MAC-Adresse:', 'IP-Adresse:', 'IP-Subnetzmaske:', 'Adresstyp:', _
    'DHCP-Server:', 'IP erhalten:', 'IP läuft ab:', 'Standardgateway:']]
    Local $x = 0, $objWMIService, $colItems, $colItems2
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE Netconnectionstatus > 0', 'WQL', 0x30)
    If Not IsObj($colItems) Then Return SetError(2, 0, 0)
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][12]
    $aReturn[$x][0] = $objItem.Manufacturer
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.AdapterType
    $aReturn[$x][3] = $objItem.NetConnectionID
    $aReturn[$x][4] = $objItem.MACAddress
    $colItems2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration', 'WQL', 0x30)
    If IsObj($colItems2) Then
    For $objItem2 In $colItems2
    If $objItem.Caption = $objItem2.Caption Then
    If $objItem2.IPEnabled = -1 Then
    $aReturn[$x][5] = $objItem2.IPAddress(0)
    $aReturn[$x][6] = $objItem2.IPSubnet(0)
    If $objItem2.DHCPEnabled = -1 Then
    $aReturn[$x][7] = 'von DHCP zugewiesen'
    $aReturn[$x][8] = $objItem2.DHCPServer
    $aReturn[$x][9] = _WMIDateStringToDate($objItem2.DHCPLeaseObtained)
    $aReturn[$x][10] = _WMIDateStringToDate($objItem2.DHCPLeaseExpires)
    Else
    $aReturn[$x][7] = 'Manuell konfiguriert'
    EndIf
    $aReturn[$x][11] = $objItem2.DefaultIPGateway(0)
    EndIf
    EndIf
    Next
    EndIf
    Next
    Return $aReturn
    EndFunc ;==>_CI_GetNetworkAdapter

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

    Func _CI_GetCPU($strComputer = '.')
    Local $aReturn[2][12] = [[ _
    'Prozessor:', 'Name:', 'Beschreibung:', 'Sockel:', 'Taktfrequenz:', 'Ext. Taktfrequenz:', 'Spannung:', _
    'Adress-Bitbreite:', 'Daten-Bitbreite:', 'Prozessor-ID:', '', '']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][12]
    $aReturn[$x][0] = $objItem.DeviceID
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.Description
    $aReturn[$x][3] = $objItem.SocketDesignation
    $aReturn[$x][4] = $objItem.CurrentClockSpeed & ' MHz (max. ' & $objItem.MaxClockSpeed & ' MHz)'
    $aReturn[$x][5] = $objItem.ExtClock & ' MHz'
    $aReturn[$x][6] = Round($objItem.CurrentVoltage / 10, 1) & ' V'
    $aReturn[$x][7] = $objItem.AddressWidth & ' Bit'
    $aReturn[$x][8] = $objItem.DataWidth & ' Bit'
    $aReturn[$x][9] = $objItem.ProcessorId
    Switch @OSVersion
    Case 'WIN_VISTA', 'WIN_7'
    $aReturn[0][10] = 'Prozessorkerne:'
    $aReturn[0][11] = 'logische Prozessoren:'
    $aReturn[$x][10] = $objItem.NumberOfCores
    $aReturn[$x][11] = $objItem.NumberOfLogicalProcessors
    EndSwitch
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetCPU

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

    Func _CI_GetRAM($strComputer = '.')
    Local $aMemType[22] = ['Unbekannt', 'Anderes', 'DRAM', 'Sync DRAM', 'Cache DRAM', _
    'EDO', 'EDRAM', 'VRAM', 'SRAM', 'RAM', 'ROM', _
    'Flash', 'EEPROM', 'FEPROM', 'EPROM', 'CDRAM', '3DRAM', _
    'SDRAM', 'SGRAM', 'RDRAM', 'DDR', 'DDR-2']
    Local $aFormFactor[24] = ['Unbekannt', 'Andere', 'SIP', 'DIP', 'ZIP', 'SOJ', _
    'Proprietär', 'SIMM', 'DIMM', 'TSOP', 'PGA', 'RIMM', _
    'SODIMM', 'SRIMM', 'SMD', 'SSMP', 'QFP', 'TQFP', _
    'SOIC', 'LCC', 'PLCC', 'BGA', 'FPBGA', 'LGA']
    Local $aErrCorr[8] = ['Reserviert', 'Andere', 'Unbekannt', 'Keine', 'Parity', 'Single-bit ECC', 'Multi-bit ECC', 'CRC']
    Local $aReturn[2][8] = [[ _
    'Belegung:', 'Kapazität:', 'Daten-Bitbreite:', 'Steckplatz:', _
    'Typ:', 'Format:', 'Fehlerkorrektur:', 'Bezeichnung:']]
    Local $x = 0, $objWMIService, $colItems, $iMemDev, $iMaxCap, $iErrCorr
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PhysicalMemoryArray', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $iMemDev = $objItem.MemoryDevices
    $iMaxCap = _ByteAutoSize($objItem.MaxCapacity * 1024, 0, 3)
    $iErrCorr = Number($objItem.MemoryErrorCorrection)
    Next
    EndIf
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PhysicalMemory', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][8]
    $aReturn[$x][0] = $objItem.BankLabel
    $aReturn[$x][1] = _ByteAutoSize($objItem.Capacity, 0, 3) & ' (max. ' & $iMaxCap & ')'
    $aReturn[$x][2] = $objItem.TotalWidth & ' Bit'
    $aReturn[$x][3] = $objItem.DeviceLocator & ' (max. ' & $iMemDev & ' Steckplätze)'
    $aReturn[$x][4] = $aMemType[Number($objItem.MemoryType)]
    $aReturn[$x][5] = $aFormFactor[Number($objItem.FormFactor)]
    $aReturn[$x][6] = $aErrCorr[$iErrCorr]
    $aReturn[$x][7] = $objItem.PartNumber
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetRAM

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

    Func _CI_GetVideoController($strComputer = '.')
    Local $aReturn[2][12] = [[ _
    'Hersteller:', 'Beschreibung:', 'RAMDAC:', 'Grafikkarten-RAM:', _
    'RAM-Typ:', 'Horiz. Auflösung:', 'Vertik. Auflösung:', 'Bits/Pixel:', _
    'Anzahl der Farben:', 'Bildwiederholfrequenz:', 'Treiberversion:', 'Treiberdatum:']]
    Local $aRAMType[14] = ['', 'Anderer', 'Unbekannt', 'VRAM', 'DRAM', 'SRAM', 'WRAM', 'EDO RAM', _
    'Burst Sync DRAM', 'Pipelined Burst SRAM', 'CDRAM', '3DRAM', 'SDRAM', 'SGRAM']
    Local $x = 0, $objWMIService, $colItems, $Output
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_VideoController', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][12]
    $aReturn[$x][0] = $objItem.AdapterCompatibility
    $aReturn[$x][1] = $objItem.Description
    $aReturn[$x][2] = $objItem.AdapterDACType
    $aReturn[$x][3] = _ByteAutoSize($objItem.AdapterRAM, 0, 3)
    $aReturn[$x][4] = $aRAMType[Number($objItem.VideoMemoryType)]
    $aReturn[$x][5] = $objItem.CurrentHorizontalResolution
    $aReturn[$x][6] = $objItem.CurrentVerticalResolution
    $aReturn[$x][7] = $objItem.CurrentBitsPerPixel
    $aReturn[$x][8] = _StringAddThousandsSep($objItem.CurrentNumberOfColors, '.', ',')
    $aReturn[$x][9] = $objItem.CurrentRefreshRate & ' Hz'
    $aReturn[$x][10] = $objItem.DriverVersion
    $aReturn[$x][11] = _WMIDateStringToDate($objItem.DriverDate)
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetVideoController

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

    Func _CI_GetMonitor($strComputer = '.')
    Local $aReturn[2][8] = [[ _
    'Hersteller:', 'Modell:', 'Breite (Pixel):', 'Höhe (Pixel):', _
    'Pixel pro Inch (X):', 'Pixel pro Inch (Y):', 'Monitorgröße (ca.):', 'PNPDeviceID:']]
    Local $x = 0, $objWMIService, $colItems, $Output
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DesktopMonitor', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][8]
    $aReturn[$x][0] = $objItem.MonitorManufacturer
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.ScreenWidth
    $aReturn[$x][3] = $objItem.ScreenHeight
    $aReturn[$x][4] = $objItem.PixelsPerXLogicalInch
    $aReturn[$x][5] = $objItem.PixelsPerYLogicalInch
    $aReturn[$x][6] = Round($objItem.ScreenWidth / ($objItem.PixelsPerXLogicalInch / 2.54), 2) & _
    ' x ' & Round($objItem.ScreenHeight / ($objItem.PixelsPerYLogicalInch / 2.54), 2) & ' cm²'
    $aReturn[$x][7] = $objItem.PNPDeviceID
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetMonitor

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

    Func _CI_GetPrinter($strComputer = '.')
    Local $aReturn[2][5] = [['Name:', 'Treibername:', 'Anschluss:', 'Horiz. Auflösung:', 'Vertik. Auflösung:']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Printer', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][5]
    $aReturn[$x][0] = $objItem.Name
    $aReturn[$x][1] = $objItem.DriverName
    $aReturn[$x][2] = $objItem.PortName
    $aReturn[$x][3] = $objItem.HorizontalResolution
    $aReturn[$x][4] = $objItem.VerticalResolution
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetPrinter

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

    Func _CI_GetSoundDevice($strComputer = '.')
    Local $aReturn[2][3] = [['Hersteller:', 'Name:', 'PNPDeviceID:']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_SoundDevice', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][3]
    $aReturn[$x][0] = $objItem.Manufacturer
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.PNPDeviceID
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetSoundDevice

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

    Func _CI_GetMainBoard($strComputer = '.')
    Local $aReturn[2][12] = [[ _
    'Hersteller:', 'Produkt:', 'Version:', 'Seriennummer:', 'Ext. Anschlüsse:', _
    'Int. Anschlüsse:', '', 'BIOS-Hersteller:', 'Name:', 'Version:', 'Datum:', 'Seriennummer:']]
    Local $x = 1, $objWMIService, $colItems, $sExtConnector = '', $sIntConnector = '', $sTmp
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PortConnector', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $sTmp = $objItem.ExternalReferenceDesignator
    If StringLen($sTmp) > 1 Then
    $sExtConnector &= $sTmp & ' ** '
    ContinueLoop
    EndIf
    $sTmp = $objItem.InternalReferenceDesignator
    If StringLen($sTmp) > 1 Then $sIntConnector &= $sTmp & ' ** '
    Next
    EndIf
    $sExtConnector = StringTrimRight($sExtConnector, 4)
    $sIntConnector = StringTrimRight($sIntConnector, 4)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_BaseBoard', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $aReturn[$x][0] = $objItem.Manufacturer
    $aReturn[$x][1] = $objItem.Product
    $aReturn[$x][2] = $objItem.Version
    $aReturn[$x][3] = $objItem.SerialNumber
    $aReturn[$x][4] = $sExtConnector
    $aReturn[$x][5] = $sIntConnector
    Next
    EndIf
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_BIOS', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $aReturn[$x][7] = $objItem.Manufacturer
    $aReturn[$x][8] = $objItem.Name
    $aReturn[$x][9] = $objItem.BIOSVersion(0)
    $aReturn[$x][10] = _WMIDateStringToDate($objItem.ReleaseDate)
    $aReturn[$x][11] = $objItem.SerialNumber
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetMainBoard

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

    Func _CI_GetSystemSlot($strComputer = '.')
    Local $aReturn[2][3] = [['Bezeichnung:', 'Steckplatz belegt:', 'max. Datenbreite:']]
    Local $aUsage[5] = ['Reserviert', 'Anderer', 'Unbekannt', 'Nein', 'Ja']
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_SystemSlot', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][3]
    $aReturn[$x][0] = $objItem.SlotDesignation
    $aReturn[$x][1] = $aUsage[$objItem.CurrentUsage]
    $aReturn[$x][2] = 2 ^ ($objItem.MaxDataWidth + 3) & ' Bits'
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetSystemSlot

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

    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 _WMIDateStringToDate($dtmDate)
    Return (StringLeft($dtmDate, 4) & '/' & StringMid($dtmDate, 5, 2) & '/' & StringMid($dtmDate, 7, 2) _
    & ' ' & StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2))
    EndFunc ;==>_WMIDateStringToDate

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

    Func _DecodeProductKey($BinaryDPID)
    If IsBinary($BinaryDPID) Then $BinaryDPID = StringMid($BinaryDPID, 3) ; Changed because Beta 3.2.13.2
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result
    $Digits = StringSplit('BCDFGHJKMPQRTVWXY2346789', '')
    $BinaryDPID = StringMid($BinaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
    $bKey[Int($i / 2)] = Dec(StringMid($BinaryDPID, $i, 2))
    Next
    For $i = $dlen - 1 To 0 Step -1
    If Mod(($i + 1), 6) = 0 Then
    $sKey[$i] = '-'
    Else
    $hi = 0
    For $n = $slen - 1 To 0 Step -1
    $Value = BitOR(BitShift($hi, -8), $bKey[$n])
    $bKey[$n] = Int($Value / 24)
    $hi = Mod($Value, 24)
    Next
    $sKey[$i] = $Digits[$hi + 1]
    EndIf
    Next
    For $i = 0 To 28
    $Result = $Result & $sKey[$i]
    Next
    Return $Result
    EndFunc ;==>_DecodeProductKey

    [/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?(\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, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

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

    Func _ArrayUmdrehen(ByRef $avArray)
    ;SEuBo
    If UBound($avArray, 0) > 2 Then Return
    $1st = UBound($avArray, 1)
    $2nd = UBound($avArray, 2)
    Local $aRet[$2nd][$1st]
    For $s1 = 0 To $1st - 1
    For $s2 = 0 To $2nd - 1
    $aRet[$s2][$s1] = $avArray[$s1][$s2]
    Next
    Next
    $avArray = $aRet
    EndFunc ;==>_ArrayUmdrehen

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

    Func WinRunTrans($Window, $Mod)
    Local $Pos = WinGetPos($Window)
    Switch $Mod
    Case "Show"
    WinSetTrans($Window, "", 0)
    WinMove($Window, "", $Pos[0], $Pos[1], ($Pos[2] / 255), ($Pos[3] / 255), 1)
    GUISetState(@SW_SHOW, $Window)
    For $i = 0 To 255 Step 5
    WinSetTrans($Window, "", $i)
    WinMove($Window, "", $Pos[0], $Pos[1], Round($i * ($Pos[2] / 255)), Round($i * ($Pos[3] / 255)), 1)
    Sleep(10)
    Next
    Case "Hide"
    For $i = 255 To 0 Step -5
    WinSetTrans($Window, "", $i)
    WinMove($Window, "", $Pos[0], $Pos[1], Round($i * ($Pos[2] / 255)), Round($i * ($Pos[3] / 255)), 1)
    Sleep(10)
    Next
    GUISetState(@SW_HIDE, $Window)
    EndSwitch
    WinMove($Window, "", $Pos[0], $Pos[1], $Pos[2], $Pos[3])
    EndFunc ;==>WinRunTrans

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

    Func _ProcessSuspend($Process)
    $processid = ProcessExists($Process)
    If $processid Then
    $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
    $i_sucess = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $ai_Handle[0])
    DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
    If IsArray($i_sucess) Then
    Return 1
    Else
    SetError(1)
    Return 0
    EndIf
    Else
    SetError(2)
    Return 0
    EndIf
    EndFunc ;==>_ProcessSuspend

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

    Func _ProcessResume($Process)
    $processid = ProcessExists($Process)
    If $processid Then
    $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
    $i_sucess = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $ai_Handle[0])
    DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
    If IsArray($i_sucess) Then
    Return 1
    Else
    SetError(1)
    Return 0
    EndIf
    Else
    SetError(2)
    Return 0
    EndIf
    EndFunc ;==>_ProcessResume
    #endregion Func's

    [/autoit]
  • Hi!

    Sen
    Vielen dank für die anregungen, mein Code soll kein (System Info) Tool sein ;) !
    Und mal auf dein Code zu sprechen zu kommen, er ist viel zu langsam und die darstellung hast du nicht gut gelöst bei mir flakert die gamze Form was wahrscheinlich an den ganzen wmi abfragen liegt das, hat Oscar in sein Post auch schon angesprochen.


    Lg Kleiner

    Einmal editiert, zuletzt von Kleiner (28. November 2010 um 10:19)

  • Langsam ist der Code nicht wirklich, wenn du mal genau siehst was alles abgefragt
    wird. Was Geschwindigkeit angeht kann man da mit AutoIt nicht mehr viel rausholen.
    Das flackern kommt nur durch die aktualisierungen der ListView's, das werde ich auch noch
    beheben :P (Es flackern auch nur die ListView's, nicht die Form o_O)

    Würdest du ihn genau durchgelesen haben wären dir Funktionen aufgefallen
    die auch in einem Taskmanager einen Platz finden könnten.

    Gerade _ProcessSuspend() & _ProcessResume() sind genial wenn es um das
    testen von Fenstern geht die nichtmehr reagieren wie es im anderen Thread gerade
    besprochen wird, bzw allgemein um schädliche Prozesse lahm zu legen ;)

  • Hi!

    Sen
    Stimmt mit den beiden Funktionen hast du recht, sind bestimmt sehr hilfreich, nur es gib keine wirkliche doku über diese beiden befehle(Funktionen), habe mich ein wenig durch Google gewühlt und einiges in andere Foren gefunden.
    Trotzdem halte ich an der Aussage fest das der Code zu langsam ist und das, liegt nicht an AutoIt sondern an den WMI abfragen, ich habe z.B ein WMI Abfrage für die CPU beim ersten Start vergehen gerne mal 5-10 sec. da muss ich mir auch noch was einfallen lassen.
    Für die ganzen WMI Abfragen gibt es API(DLL) Lösungen sind halt sehr schwer umzusetzen.

    Danke noch mal für den Hinweis.

    Lg Kleiner