So, ich hab dank SEuBos Hilfe jetzt die SysInfo Func's von Oscar mit drin.
Allerdings ist der Code etwas.. "groß" & leicht unübersichtlich geworden.
Ideen für Verkürzungen, schnellere Funktionen & co?
Nur her damit
Achtung, Code ist "lang"
Spoiler anzeigen
;==============================================================
; AskSystem
;==============================================================
; Author: Sen
; Version: 1.7.2 Beta
;==============================================================
; 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>
Dim $Tab[17]
Dim $List[17]
Local $Load
If @OSType <> 'WIN32_NT' Then
MsgBox(48, "AskSystem - Error", "AskSystem funktioniert erst ab Windows 2000")
Exit
EndIf
#Region GUI
$Main = GUICreate("AskSystem", 600, 400, -1, -1)
;Tab Menü
$Tab[0] = GUICtrlCreateTab(0, 0, 600, 400)
$Tab_Con = GUICtrlCreateContextMenu($Tab[0])
$Con_Refresh = GUICtrlCreateMenuItem("Refresh All", $Tab_Con)
#Region Tab - Manager
$Tab[1] = GUICtrlCreateTabItem("Manager")
;ProgessBar
$ProgressP = GUICtrlCreateProgress(0, 250, 600, 15)
$ProgressD = GUICtrlCreateProgress(0, 385, 600, 15)
;ProzessListe - Process
$List[0] = GUICtrlCreateListView("Process|PID|Path|Title|Hwnd|Read|Write|Transfer|I/O", 0, 25, 600, 225)
_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)
;ProzessListe - Drives
$List[1] = GUICtrlCreateListView("Label|System|Serial|Type|Free|Total", 0, 265, 600, 120)
_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)
;Context Menü Process
$ContextP = GUICtrlCreateContextMenu($List[0])
$ProcessKill = GUICtrlCreateMenuItem("Kill Process", $ContextP)
$RefreshP = GUICtrlCreateMenuItem("Refresh", $ContextP)
$CopyInfoP = GUICtrlCreateMenuItem("Copy to Clipboard", $ContextP)
$SaveLogP = GUICtrlCreateMenuItem("Save Process Log", $ContextP)
;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
#Region Tab - Windows
$Tab[2] = GUICtrlCreateTabItem("Windows")
$List[2] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Windows
#Region Tab - Drives
$Tab[3] = GUICtrlCreateTabItem("Drives")
$List[3] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Drives
#Region Tab - Harddisks
$Tab[4] = GUICtrlCreateTabItem("Harddisks")
$List[4] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Harddisks
#Region Tab - Cd-Rom
$Tab[5] = GUICtrlCreateTabItem("Cd-Rom")
$List[5] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Cd-Rom
#Region Tab - Network
$Tab[6] = GUICtrlCreateTabItem("Network")
$List[6] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Network
#Region Tab - Networkadapter
$Tab[7] = GUICtrlCreateTabItem("NetworkAdapter")
$List[7] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Networkadapter
#Region Tab - Processor
$Tab[8] = GUICtrlCreateTabItem("CPU")
$List[8] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Processor
#Region Tab - RAM
$Tab[9] = GUICtrlCreateTabItem("RAM")
$List[9] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - RAM
#Region Tab - Graphiccard
$Tab[10] = GUICtrlCreateTabItem("Graphiccard")
$List[10] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Graphiccard
#Region Tab - Monitor
$Tab[11] = GUICtrlCreateTabItem("Monitor")
$List[11] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Monitor
#Region Tab - Printer
$Tab[12] = GUICtrlCreateTabItem("Printer")
$List[12] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Printer
#Region Tab - Soundcard
$Tab[13] = GUICtrlCreateTabItem("Soundcard")
$List[13] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Soundcard
#Region Tab - Mainboard
$Tab[14] = GUICtrlCreateTabItem("Mainboard")
$List[14] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Mainboard
#Region Tab - Sockets
$Tab[15] = GUICtrlCreateTabItem("Sockets")
$List[15] = GUICtrlCreateListView("||", 0, 25, 600, 375)
#EndRegion Tab - Sockets
#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
;GUI Settings
WinRunTrans($Main, "Show")
#EndRegion GUI
#Region StartUp
FillProcess()
FillDrives()
FillTabs()
#EndRegion StartUp
#Region Case's
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Con_Refresh
For $i = "3" To "15"
_GUICtrlListView_DeleteAllItems($List[$i])
Next
FillTabs()
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()
EndSwitch
WEnd
#EndRegion Case's
#Region Func's
Func OnAutoItExit()
WinRunTrans($Main, "Hide")
_GUICtrlListView_UnRegisterSortCallBack($List[0])
_GUICtrlListView_UnRegisterSortCallBack($List[1])
EndFunc ;==>OnAutoItExit
Func _FillInfo()
GUICtrlCreateListViewItem("Programm Name:|AskSystem", $List[16])
GUICtrlCreateListViewItem("Version:|1.7.2 Beta", $List[16])
GUICtrlCreateListViewItem("Date:|25.12.2009", $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.7.2 -", $List[16])
GUICtrlCreateListViewItem("|- System Info's added", $List[16])
GUICtrlCreateListViewItem("|- Info-Site added", $List[16])
EndFunc ;==>_FillInfo
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
Func CopyToClipBoardP()
$ClickedItem = GUICtrlRead($List[0])
If $ClickedItem > 0 Then
$Read = GUICtrlRead($ClickedItem)
ClipPut($Read)
EndIf
EndFunc ;==>CopyToClipBoardP
Func CopyToClipBoardD()
$ClickedItem = GUICtrlRead($List[1])
If $ClickedItem > 0 Then
$Read = GUICtrlRead($ClickedItem)
ClipPut($Read)
EndIf
EndFunc ;==>CopyToClipBoardD
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
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
Func FillDrives()
_GUICtrlListView_BeginUpdate($List[1])
_GUICtrlListView_DeleteAllItems($List[1])
$Drives = DriveGetDrive("ALL")
For $i = "1" To $Drives[0]
GUICtrlSetData($ProgressD, (100 * $i) / $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
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]
GUICtrlSetData($ProgressP, (100 * $i) / $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
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)
; 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)
;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)
;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)
;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)
;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)
;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)
;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)
;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)
;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)
;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)
;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)
;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)
;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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Func WinRunTrans($Window, $Mod)
If $Mod = "Show" Then
WinSetTrans($Window, "", 0)
GUISetState(@SW_SHOW, $Window)
For $i = 0 To 255 Step 5
WinSetTrans($Window, "", $i)
Sleep(10)
Next
ElseIf $Mod = "Hide" Then
For $i = 255 To 0 Step -5
WinSetTrans($Window, "", $i)
Sleep(10)
Next
GUISetState(@SW_HIDE, $Window)
EndIf
EndFunc ;==>WinRunTrans
#EndRegion Func's
Edit:
Download da der Source zu lang ist: autoit.de/wcf/attachment/7105/