Hallo Gleichgesinnte,
ich möchte eine GUI schreiben, welche mir den Windows Update-Dienst überwacht.
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 476, 96, 192, 124)
$input= GUICtrlCreateLabel("", 96, 32, 105, 21)
$Label1 = GUICtrlCreateLabel("Windows Update", 16, 32, 66, 17)
$Start = GUICtrlCreateButton("Start", 216, 32, 97, 25, $WS_GROUP)
$Stop = GUICtrlCreateButton("Stop", 328, 32, 113, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func _RetrieveServiceState($s_Machine, $s_ServiceName)
Local Const $wbemFlagReturnImmediately = 0x10
Local Const $wbemFlagForwardOnly = 0x20
Local $colItems = "", $objItem
Local $objWMIService = ObjGet("winmgmts:\\" & $s_Machine & "\root\CIMV2")
If @error Then
MsgBox(16, "_RetrieveServiceState", "ObjGet Error: winmgmts")
Return
EndIf
$colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Service WHERE Name = '" & $s_ServiceName & "'", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If @error Then
MsgBox(16, "_RetrieveServiceState", "ExecQuery Error: SELECT * FROM Win32_Service")
Return
EndIf
If IsObj($colItems) Then
For $objItem In $colItems
Return $objItem.State
Next
EndIf
EndFunc ;==>_RetrieveServiceState
Do
$service = "wuauserv"
$input= GUICtrlCreateLabel(" " & _RetrieveServiceState(@ComputerName, $service), 96, 32, 105, 21)
EndIf
sleep (3000)
until 1 = 2
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Start
RunWait("net.exe start wuauserv")
$Input = GUICtrlCreateLabel(" " & _RetrieveServiceState(@ComputerName, $service), 96, 32, 105, 21)
Case $Stop
RunWait("net.exe stop wuauserv")
$Input = GUICtrlCreateLabel(" " & _RetrieveServiceState(@ComputerName, $service), 96, 32, 105, 21)
EndSwitch
WEnd
- Im "$input= GUICtrlCreateLabel("", 96, 32, 105, 21)" Feld soll immer der aktuelle Status stehen, also ob er gestoppt ist oder gestartet.
- Über die Buttons start und stop möchte ich den Dienst starten und stoppen können, jedoch soll sich der status in "$input= GUICtrlCreateLabel("", 96, 32, 105, 21)" dann auch ändern.
Wenn ich eine Do - Until oder eine While-Schleife einfüge wird mir zwar der aktuelle status angezeigt, jedoch funktionieren die start-stop-buttons nicht mehr.
Lasse ich die schleifen weg, funktionieren die buttons, allerdings hat der status dann keinen einfluss wenn ich über cmd den dienst starte oder stoppe dann kriegt der status das nicht mit da keine schleife vorhanden ist ![]()
Weis hier jemand weiter ? bitte um hilfe -> D A N K E ...