Hi zusammen,
Ich habe mir ein kleines Programm geschrieben womit ich den aktuellen Zustand mehrer Windows Dienste ausliest.
Doch leider ist die CPU Auslastung hoch und ich wollte mal fragen ob es dort Verbesserung Potenzial gibt?
Funktion die momentan verwendet wird.
Spoiler anzeigen
AutoIt: Auslesen des Zustandes
#Region Statusmode
Func _statusmode()
For $i = 0 To _GUICtrlListView_GetItemCount($listview) -1
Local $objWMIService = ObjGet('winmgmts:\\.\root\cimv2')
Local $colItems = $objWMIService.ExecQuery("Select * From Win32_Service")
If IsObj($colItems) Then
For $objItem In $colItems
if _GUICtrlListView_GetItemText($listview, $i, 2) = $objItem.DisplayName Then
_GUICtrlListView_SetItemText($listview, $i, $objItem.StartMode,0)
_GUICtrlListView_SetItemText($listview, $i, $objItem.State,1)
EndIf
Next
EndIf
Next
EndFunc
#EndRegion Statusmode
Alles anzeigen
_GUICtrlListView_GetItemCount($listview) = Dienste die Nachgeschaut werden
Versuch klappt aber nicht.
Spoiler anzeigen
AutoIt: Erster Versuch Direkt nach dem Dienst zu suchen
#Region Statusmode
#Region Statusmode
Func _statusmodetest()
For $i = 0 To _GUICtrlListView_GetItemCount($listview) -1
Local $objWMIService = ObjGet('winmgmts:\\.\root\cimv2')
Local $colItems = $objWMIService.ExecQuery('Select * From Win32_Service where Name=' & "'%" & _GUICtrlListView_GetItemText($listview, $i, 2) & "%'")
If IsObj($colItems) Then
For $objItem In $colItems
if _GUICtrlListView_GetItemText($listview, $i, 2) = $objItem.DisplayName Then
_GUICtrlListView_SetItemText($listview, $i, $objItem.StartMode,0)
_GUICtrlListView_SetItemText($listview, $i, $objItem.State,1)
EndIf
Next
EndIf
Next
EndFunc
Alles anzeigen
Irgendwie klappt das aber nicht so wie ich es gedachte habe.
Vielleicht kann mir da jemand weiterhelfen?