Hi zusammen,
funktionierender Stand, Main.au3 und Abhängigkeiten (UDFs):
🔗 Dateien online oder alternativ
📂 Download zip oder alternativ
💾 git clone https://github.com/Sven-Seyfert/AutoIt-Forums-Help.git
Viele Grüße
Sven
Hi zusammen,
funktionierender Stand, Main.au3 und Abhängigkeiten (UDFs):
🔗 Dateien online oder alternativ
📂 Download zip oder alternativ
💾 git clone https://github.com/Sven-Seyfert/AutoIt-Forums-Help.git
Viele Grüße
Sven
Hi casi4712 ,
in meinen post #4 habe ich den fehlenden Backslash bereits hinzugefügt gehabt, dies scheint dir nicht aufgefallen zu sein, naja.
Darum schreibt Schnuffel und Velted bzgl. Konsolenausgabe, message box und wir fragen nach Editor und Ausführung. usw. => dient also alles in Richtung Umgang mit AutoIt und Editor, nicht mal dem Code selbst 😉 .
In deinem ersten post schreibst du:
[...] ich habe eine Function um einen Ordner zu synchronisieren mit Robocopy [...]
Dann lass uns doch mal anders herangehen:
Was heißt synchronisieren für dich? Willst du "Ordner-A" und dessen Inhalt einfach nur in "Ordner-B" an anderer Stelle kopieren oder brauchst du tatsächlich Robocopy?
Viele Grüße
Sven
Hi nochmal,
was genau bekommst du denn angezeigt wenn du CMD öffnest und Robocopy einfach manuell mit deinen ganzen Parametern mal aufrufst?
Wenn dort der Fehler liegt, was Schnuffel festgestellt hat, dann wirst du mit deinem AutoIt Aufruf auch nichts bekommen.
Daher bitte erst den Robocopy Aufruf manuell lauffähig bekommen, dann in AutoIt einbinden 😉 .
Viele Grüße
Sven
Hi Lambdax ,
noch bin ich nicht dazu gekommen mir das Projekt (bzw. die GitHub-Projekte) mal im Detail anzuschauen, doch bisher sieht es sehr interessant und nützlich aus.
Vielen Dank dafür 👍 . Bei Gelegenheit versuche ich mal paar Tests dazu zu machen.
Viele Grüße
Sven
Hi casi4712 ,
Puh, ganz schöne Menge Code für eine Kopieraktion [...]
Die Funktion _runProgram() erscheint recht überladen für einen trivialen Aufruf von ShellExecuteWait(), dies muss ich zugeben, ja. Musst du für deinen Fall auch gar nicht verwenden sondern einfach das Beispiel von Oscar nutzen 😉 . Die Funktion _runProgram() ist einfach etwas robuster wenn es um andere Laufwerke/Partitionen geht ... aber egal.
[...] das Problem liegt schon in den Aufurfparametern für Robocopy [...]
Darauf wollte ich hinaus mit meiner Aussage:
Also schaue dir erstmal die Consolenausgabe an, ob deine Parameter so stimmen würden, wenn du Robocopy manuell über CMD ausführen würdest 😉 .
Tipp:
Viele Grüße
Sven
Hallo casi4712 ,
hier mal eine Kombination aus dem was Oscar vorgeschlagen hat und einer alten Funktion "_runProgram()" zum Aufruf eines externen Programmes:
_syncro()
Func _syncro()
Local $sRobocopyExeFilePath = 'C:\windows\system32\robocopy.exe'
Local $sSource = 'c:\plc\'
Local $sDestination = 'f:\plc1\'
Local $sParams = StringFormat('%s "%s" /E /Z /MIR /R:3 /W:5 /XD >nul 2>&1 "%sRecycled\" "%sRecycler\" "%sSystem Volume Information\"', $sSource, $sDestination, $sSource, $sSource, $sSource)
_runProgram($sRobocopyExeFilePath, $sParams, True)
;~ _runProgram($sRobocopyExeFilePath, $sParams, False, True, False)
;~ _runProgram($sRobocopyExeFilePath, $sParams)
EndFunc
Func _runProgram($sProgramExeFilePath, $sParams = '', $bOnlyTest = False, $bWaitAfterRun = False, $bHidden = True)
Local $sWaitCommand = ' /C '
Local $sDriveLetter = StringLeft($sProgramExeFilePath, 1)
Local $sChangeDriveCommand = $sDriveLetter & ': && '
Local $sExeFileName = StringRegExpReplace($sProgramExeFilePath, '(.+?)\\', '', 0)
Local $sExeFolder = StringTrimRight($sProgramExeFilePath, StringLen($sExeFileName))
Local $sChangeDirCommand = 'cd "' & $sExeFolder & '" '
Local $sCallProgrammCommand = '&& "' & $sExeFileName & '"'
Local $sParamsCommand = ''
Local $sVisibility = @SW_HIDE
If $sParams <> '' Then
$sParamsCommand = ' ' & $sParams
EndIf
If $bOnlyTest Then
ConsoleWrite($sChangeDriveCommand & $sChangeDirCommand & $sCallProgrammCommand & $sParamsCommand & @CRLF)
Return
EndIf
If $bWaitAfterRun Then
$sWaitCommand = ' /K '
EndIf
If Not $bHidden Then
$sVisibility = @SW_SHOW
EndIf
ShellExecuteWait(@ComSpec, $sWaitCommand & $sChangeDriveCommand & $sChangeDirCommand & $sCallProgrammCommand & $sParamsCommand, '', '', $sVisibility)
EndFunc
Alles anzeigen
Bitte beachte:
Also schaue dir erstmal die Consolenausgabe an, ob deine Parameter so stimmen würden, wenn du Robocopy manuell über CMD ausführen würdest 😉 .
Viele Grüße
Sven
Hi Lashandan ,
ZitatZitat von Lashandan Als nächstes sollen die Daten, sofern vorhanden, direkt nach der Auswahl des Rechners im DropDownMenü, im GUI ausgegeben werden.
Klingt logisch 😀 .
Ich melde mich wieder
Davon gehe ich mal aus 😅 , gerne.
Viele Grüße
Sven
Hi casi4712 ,
Moombas hat dir bereits die richtige Antwort und ein gutes Beispiel in seinem letzten post (#55) gegeben.
Nur der Vollständigkeit halber hier die Code-Variante zu dem von mir angenommenen Code-Stand von dir:
; includes ---------------------------------------------------------------------
#include-once
#include "GUIBkImage.au3"
#include "Services.au3"
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiCtrlSetOnHover_UDF.au3>
#include <StaticConstants.au3>
#include <String.au3>
#include <WinApi.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
; opt --------------------------------------------------------------------------
Opt('MustDeclareVars', 1)
; declaration ------------------------------------------------------------------
Global $ARRAY_COLOR_TOP_MIN[3] = [36, 65, 142]
Global $ARRAY_COLOR_TOP_MAX[3] = [11, 42, 122]
Global $RBOX_EVENT_CLOSE = 1
Global $ROUNDES = 20
Global $LastHwnd = 0
Global $PCName = @ComputerName
Global $BeepFile = 'C:\Windows\Temp\beep.wav'
Global $sTaskName = '_07_DataCollect'
Global $sScriptRootFolder = "C:\Users\Administrator\Downloads\"
Global $GUIBKCOLOR = 0xEEC591
Global $AugVers = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{92000000-2021-0000-0000-415547494153}", "DisplayVersion")
Global $sFilePath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "ProgramFilesDir")
Global $WinBuild = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild")
Global $WinDisplayVers = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DisplayVersion")
Global $WinName = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")
Global $gMsg, $iPID, $prog
Global $idButton_1
Global $idButton_2
Global $idButton_3
Global $idButton_4
Global $idButton_5
Global $idButton_11
Global $idButton_12
Global $idButton_13
Global $idButton_14
Global $idButton_15
Global $idButton_16
Global $idButton_17
Global $idButton_18
Global $idButton_19
Global $idButton_20
Global $idButton_21
Global $idButton_22
Global $idButton_23
Global $idButton_24
Global $idButton_32
Global $idButton_33
Global $idButton_34
Global $idButton_35
Global $idButton_36
Global $idButton_37
Global $idButton_38
Global $idButton_39
Global $idButton_40
Global $idButton_41
Global $idButton_44
Global $idButton_45
Global $idButton_46
Global $idButton_47
Global $idButton_48
Global $idButton_51
Global $idButton_52
Global $idButton_53
Global $idButton_54
Global $idButton_55
Global $idButton_56
Global $sSqlServiceStatusLabel = "Local SQL-Server: "
Global $sApacheServiceStatusLabel = "Local Apache-Server: "
Global $iSqlServiceStatusLabel
Global $iApacheServiceStatusLabel
; processing -------------------------------------------------------------------
FileInstall("C:\Users\Rickl\Pictures\DSC04006.jpg", "C:\Windows\Temp\hg.jpg", 1)
Global $hGui = RBoxCreate("LAC WartungsTool Beta", 860, 600)
_createLabels()
_createButtons()
AdlibRegister('_updateServiceStatus', 5000)
;~ GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660)
While True
CheckX($hGui, $RBOX_EVENT_CLOSE, "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0xA3A3A3)", "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0x555555)")
$gMsg = GUIGetMsg()
Switch $gMsg
Case $GUI_EVENT_CLOSE, $RBOX_EVENT_CLOSE
GUIDelete($hGui)
AdlibUnRegister('_updateServiceStatus')
Exit
Case $idButton_1
$iPID = Run($sScriptRootFolder & "PC-Einrichtung\PCSETTING_listv2.cmd", "", 10)
Case $idButton_2
$iPID = Run($sScriptRootFolder & "CustomCOPY.bat", "", 10)
Case $idButton_3
MsgBox(0, "", 3)
Case $idButton_4
Global $filename = "C:\Program Files\Notepad++\notepad++.exe"
If FileExists($filename) Then
$prog = ShellExecute($filename, "C:\Windows\start\RegWerte_setzen.reg", "", "open", @SW_SHOW)
Else
;~ $prog = ShellExecute("C:\Windows\start\RegWerte_setzen.reg","","open",@SW_SHOW)
$prog = ShellExecute('notepad.exe', 'C:\Windows\start\RegWerte_setzen.reg')
EndIf
Case $idButton_5
$iPID = SoundPlay($BeepFile)
Case $idButton_11
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_12
$iPID = RunWait(Run(@ComSpec & " /c " & $sScriptRootFolder & "CreateTasks.cmd"))
;~ RunWait(@ComSpec & " /c " & $sScriptRootFolder & "CreateTasks.cmd")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_13
$iPID = RunWait(Run(@ComSpec & " /c " & $sScriptRootFolder & "ETC\ProxyStandard.cmd"))
;~ RunWait(@ComSpec & " /c " & $sScriptRootFolder & "ETC\ProxyStandard.cmd")
SoundPlay($BeepFile)
Case $idButton_14
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "TestTOOLS\WuReset.bat")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_15
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\WinUpd.cmd")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_16
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "ETC\OfficeRegister.cmd ")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_17
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\Soft\officeKill.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_19
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\TOOLS\TOOLS\AppsRepair.bat", "", 10)
SoundPlay($BeepFile)
Case $idButton_39
$iPID = Run(@ComSpec & " /c " & $sScriptRootFolder & "Ordner_leeren.cmd")
;~ RunWait(@ComSpec & " /c " & $sScriptRootFolder & "Ordner_leeren.cmd")
;~ SoundPlay($BeepFile)
Case $idButton_40
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "Datentraegerbereinigung\Dtclean.bat")
$iPID = SoundPlay($BeepFile)
Case $idButton_41
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\TestGeraete.cmd")
_SQL()
;~ MsgBox(0,"", "Es existiert eine Variable mit dem Namen: " & $st ) ;<= hier soll der name der variable stehen, nicht der wert
$iPID = SoundPlay($BeepFile)
Case $idButton_47
;~ ShellExecute($sScriptRootFolder & "Windows10Upgrade9252.exe")
RunWait($sScriptRootFolder & "Windows10Upgrade9252.exe")
$iPID = SoundPlay($BeepFile)
FileDelete("C:\Users\Riegert\Desktop\Windows 10-Update-Assistent.lnk")
Case $idButton_53
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
RunWait(@ComSpec & " /c " & "V:\Austausch-Daten\Riegert\inv2\CSV-Merge10.bat")
$iPID = SoundPlay($BeepFile)
Case $idButton_54
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
RunWait(@ComSpec & " /c " & "V:\Austausch-Daten\Riegert\inv2\CSV-Merge_Short.bat")
$iPID = SoundPlay($BeepFile)
Case $idButton_55
GUICtrlSetTip(-1, "Inventar-Liste")
ShellExecute("\\ds1\Freigaben\Referat_5_Informationstechnologie\51_Hardware_und_Software\511_Inventare\5112_Invertarliste_Hardware\Hardware\Inventarliste Hardware.xls")
$iPID = SoundPlay($BeepFile)
Case $idButton_56
GUICtrlSetTip(-1, "Inventarisierungs-Script ausführen")
Local $sTaskName = '_07_DataCollect'
;~ RunWait("schtasks /Run /TN ' & "$sTaskName"')
;~ RunWait('schtasks.exe /Run /TN ' & $sTaskName, '', @SW_HIDE)
$iPID = SoundPlay($BeepFile)
EndSwitch
WEnd
; functions --------------------------------------------------------------------
Func _createLabels()
GUICtrlCreateLabel("CUSTOMIZING", 10, 35, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
$iSqlServiceStatusLabel = GUICtrlCreateLabel($sSqlServiceStatusLabel, 600, 35, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
$iApacheServiceStatusLabel = GUICtrlCreateLabel($sApacheServiceStatusLabel, 600, 50, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($PCName, 610, 290, 980, 30)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 19, 800) ; bold
GUICtrlCreateLabel($WinBuild, 610, 330, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($WinDisplayVers, 610, 350, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($AugVers, 610, 370, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($WinName, 610, 390, 980, 30)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel("Web-Server: " & _Webserver(), 600, 65, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel("Einzelmodule", 10, 115, 780, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 900) ; bold
GUICtrlCreateLabel("System-Wartung und Checks", 10, 220, 780, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 900) ; bold
GUICtrlCreateLabel("Datenbank", 10, 420, 780, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 900) ; bold
EndFunc
Func _createButtons()
$idButton_1 = GUICtrlCreateButton("Customize PC", 10, 55, 100, 20)
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
$idButton_2 = GUICtrlCreateButton("Image-Prepare", 130, 55, 100, 20)
GUICtrlSetTip(-1, "Vorinstallaierte Windows Version anpassen -> Image")
$idButton_3 = GUICtrlCreateButton("DL aktualisieren", 250, 55, 100, 20)
$idButton_4 = GUICtrlCreateButton("RegSettings", 370, 55, 100, 20)
$idButton_5 = GUICtrlCreateButton("TEST", 490, 55, 85, 20)
$idButton_11 = GUICtrlCreateButton("Standard Software", 10, 135, 100, 20)
$idButton_12 = GUICtrlCreateButton("Aufgaben", 130, 135, 100, 20)
$idButton_13 = GUICtrlCreateButton("Standard Proxies", 250, 135, 100, 20)
$idButton_14 = GUICtrlCreateButton("WinUpd Reset", 370, 135, 100, 20)
$idButton_15 = GUICtrlCreateButton("UPDATES", 490, 135, 100, 20)
$idButton_16 = GUICtrlCreateButton("Office registrieren", 610, 135, 100, 20)
$idButton_17 = GUICtrlCreateButton("Office Kill", 730, 135, 100, 20)
$idButton_18 = GUICtrlCreateButton("Domäne out/in", 10, 160, 100, 20)
$idButton_19 = GUICtrlCreateButton("APPS reparieren", 130, 160, 100, 20)
$idButton_20 = GUICtrlCreateButton("", 250, 160, 100, 20)
$idButton_21 = GUICtrlCreateButton("", 370, 160, 100, 20)
$idButton_22 = GUICtrlCreateButton("", 490, 160, 100, 20)
$idButton_23 = GUICtrlCreateButton("", 610, 160, 100, 20)
$idButton_24 = GUICtrlCreateButton("", 730, 160, 100, 20)
$idButton_32 = GUICtrlCreateButton("ggg", 10, 185, 100, 20)
$idButton_33 = GUICtrlCreateButton("", 130, 185, 100, 20)
$idButton_34 = GUICtrlCreateButton("", 250, 185, 100, 20)
$idButton_35 = GUICtrlCreateButton("", 370, 185, 100, 20)
$idButton_36 = GUICtrlCreateButton("gfgf", 490, 185, 100, 20)
$idButton_37 = GUICtrlCreateButton("VB ON temp", 610, 185, 100, 20)
$idButton_38 = GUICtrlCreateButton("VB OFF", 730, 185, 100, 20)
$idButton_39 = GUICtrlCreateButton("PC-CLEAN", 10, 240, 100, 20)
$idButton_40 = GUICtrlCreateButton("Win bereinigen", 130, 240, 100, 20)
$idButton_41 = GUICtrlCreateButton("Geräte Check", 250, 240, 100, 20)
$idButton_44 = GUICtrlCreateButton("", 610, 240, 100, 20)
$idButton_45 = GUICtrlCreateButton("", 730, 240, 100, 20)
$idButton_46 = GUICtrlCreateButton("Win RESET!", 10, 265, 100, 20)
$idButton_47 = GUICtrlCreateButton("Win Update Ass.", 130, 265, 100, 20)
$idButton_48 = GUICtrlCreateButton("", 250, 265, 100, 20)
$idButton_51 = GUICtrlCreateButton("MKLINK EPIC", 610, 265, 100, 20)
$idButton_52 = GUICtrlCreateButton("", 730, 265, 100, 20)
$idButton_53 = GUICtrlCreateButton("PC-List long", 490, 340, 100, 20)
$idButton_54 = GUICtrlCreateButton("PC-List short", 490, 365, 100, 20)
$idButton_55 = GUICtrlCreateButton("Inventar Liste", 490, 390, 100, 20)
$idButton_56 = GUICtrlCreateButton("Inventarisieren", 490, 315, 100, 20)
EndFunc
Func RBoxCreate($Title, $width, $height, $left = -1, $top = -1, $show = 1)
Local $GUI = GUICreate($Title, $width, $height, $left, $top, $WS_POPUP)
GUISetBkColor($GUIBKCOLOR, $GUI)
;~ _GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES)
$RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X', $width - 20, 3, 25, 25)
GUICtrlSetCursor($RBOX_EVENT_CLOSE, 0)
GUICtrlSetBkColor($RBOX_EVENT_CLOSE, -2)
GUICtrlSetFont($RBOX_EVENT_CLOSE, 15, 800)
GUICtrlSetColor($RBOX_EVENT_CLOSE, 0x555555)
$Title &= " "
Local $hTitle = GUICtrlCreateLabel($Title, 0, 0, $width - 20, 26, $SS_CENTER, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont($hTitle, 17, 400, 0, "Consolas")
GUICtrlSetBkColor($hTitle, -2)
Local $Graphic = GUICtrlCreateGraphic(0, 0, $width, 25)
GUICtrlSetState($Graphic, $Gui_DISABLE)
;~ GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX)
If $show = 1 Then GUISetState(@SW_SHOW, $GUI)
Return $GUI
EndFunc
Func CheckX($hGui, $CtrlID, $sCMD, $eCMD)
Local $cGui = GUIGetCursorInfo($hGui)
If Not IsArray($cGui) Then
Return 0
EndIf
If $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd", $cGui[4])
If $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd", $cGui[4])
EndFunc
Func _SQL()
Local $st = False
Local $FileText ; fehlt!
Local Const $SeviceName = "SQL Server (AUGIAS)" ; name of the service to test ; Local Const fehlte
RunWait(@ComSpec & " /c net start > c:\temp\services.txt", "", @SW_HIDE) ; send a list of the services that are running to a file
; hier würde eine Prüfung Sinn machen
$FileText = FileRead("c:\temp\services.txt", FileGetSize("c:\temp\services.txt")) ; read that file
If StringInStr($FileText, $SeviceName) Then ; check for the service name
$st = "RUNNING" ; ich würde True wählen
Else
$st = "OFF" ; ich würde False wählen
EndIf
Return $st
EndFunc
Func _Webserver()
Local $ws ; fehlt! und ich würde es hier direkt als = False setzen!
Local $FileText ;fehlt!
Local Const $SeviceName = "Apache2.4"
RunWait(@ComSpec & " /c net start > c:\temp\services.txt", "", @SW_HIDE)
; hier würde eine Prüfung Sinn machen
$FileText = FileRead("c:\temp\services.txt", FileGetSize("c:\temp\services.txt")) ; read that file
Local $st
If StringInStr($FileText, $SeviceName) Then ; check for the service name
$st = "RUNNING" ; ich würde True wählen
Else
$st = "OFF" ; ich würde False wählen
EndIf
Return $st
EndFunc
Func Request_Service($Servicename)
If _Service_Exists($Servicename) Then
Return Status(_Service_QueryStatus($Servicename)[1])
Else
Return 'Service does not exist'
EndIf
EndFunc
Func Status($Status)
Switch $Status
Case 1
$Status = 'SERVICE_STOPPED'
Case 2
$Status = 'SERVICE_START_PENDING'
Case 3
$Status = 'SERVICE_STOP_PENDING'
Case 4
$Status = 'SERVICE_RUNNING'
Case 5
$Status = 'SERVICE_CONTINUE_PENDING'
Case 6
$Status = 'SERVICE_PAUSE_PENDING'
Case 7
$Status = 'SERVICE_PAUSED'
Case Else
$Status = 'SERVICE_UNKNOWN_STATE'
EndSwitch
Return ($Status)
EndFunc
Func _updateServiceStatus()
GUICtrlSetData($iSqlServiceStatusLabel, $sSqlServiceStatusLabel & Request_Service("MSSQL"))
GUICtrlSetData($iApacheServiceStatusLabel, $sApacheServiceStatusLabel & Request_Service("Apache2.4"))
EndFunc
Alles anzeigen
Und hier siehst du den "Diff" - was tatsächlich geändert wurde zur Variante vorher.
Viele Grüße
Sven
Hi Lashandan ,
Den gesamte Code möchte ich aktuell noch nicht präsentieren da er ein paar sensible Daten erhält.
Okay, sowas dachte ich mir schon. Dann hier mal ein Beispiel um zu klären, ob du dies meinst/brauchst:
; includes ---------------------------------------------------------------------
#include-once
; opt --------------------------------------------------------------------------
Opt('MustDeclareVars', 1)
; declaration ------------------------------------------------------------------
Global Const $GUI_EVENT_CLOSE = -3
Global $hGui
Global $cDropdown
Global $cLoadButton
Global $sListOfComputer = 'Et;repellendus;eos;quasi;adipisci;rerum;aperiam;Voluptatem;ea;nisi;Soluta;expedita'
; processing -------------------------------------------------------------------
_createGui()
_createGuiElements()
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $cLoadButton
_fillCombobox($sListOfComputer)
EndSwitch
WEnd
_guiDispose()
; functions --------------------------------------------------------------------
Func _createGui()
$hGui = GUICreate('Demo', 350, 250)
EndFunc
Func _createGuiElements()
$cDropdown = GUICtrlCreateCombo('Bitte wählen ...', 15, 15, 320)
$cLoadButton = GUICtrlCreateButton('Laden', 15, 50, 320)
GUISetState(@SW_SHOW)
EndFunc
Func _guiDispose()
GUIDelete($hGUI)
Exit
EndFunc
Func _fillCombobox($sData)
Local $sListOfComputer = StringReplace($sData, ';', '|')
GUICtrlSetData($cDropdown, $sListOfComputer)
EndFunc
Alles anzeigen
Viele Grüße
Sven
Hi Lashandan ,
kannst du ggf. deinen Code (bestenfalls gesamt als *.zip) zu Verfügung stellen oder geht das auf Grund des Datenschutz nicht? Mir fällt es schwer eine hoffentlich passende Antwort zu geben, wenn ich keine Testdaten dazu erzeugen kann/habe.
Hab dann versucht das Array aufzulösen und wiederum in eine Listenvariable zu schmeißen um sie anschließend in die Dropdownliste zu übergeben.
Verstehe den Sinn bzw. das Ziel dazu nicht. Du willst Informationen eines Arrays der Combobox übergeben, nehme ich an? Dann sollte die Funktion doch helfen oder nicht?
Viele Grüße
Sven
Hi casi4712 ,
ausgehend von diesem Code-Stand:
; includes ---------------------------------------------------------------------
#include-once
#include "GUIBkImage.au3"
#include "Services.au3"
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiCtrlSetOnHover_UDF.au3>
#include <StaticConstants.au3>
#include <String.au3>
#include <WinApi.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
; opt --------------------------------------------------------------------------
Opt('MustDeclareVars', 1)
; declaration ------------------------------------------------------------------
Global $ARRAY_COLOR_TOP_MIN[3] = [36, 65, 142]
Global $ARRAY_COLOR_TOP_MAX[3] = [11, 42, 122]
Global $RBOX_EVENT_CLOSE = 1
Global $ROUNDES = 20
Global $LastHwnd = 0
Global $PCName = @ComputerName
Global $BeepFile = 'C:\Windows\Temp\beep.wav'
Global $sTaskName = '_07_DataCollect'
Global $sScriptRootFolder = "C:\Users\Administrator\Downloads\"
Global $GUIBKCOLOR = 0xEEC591
Global $AugVers = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{92000000-2021-0000-0000-415547494153}", "DisplayVersion")
Global $sFilePath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "ProgramFilesDir")
Global $WinBuild = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild")
Global $WinDisplayVers = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DisplayVersion")
Global $WinName = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")
Global $gMsg, $iPID, $prog
Global $idButton_1
Global $idButton_2
Global $idButton_3
Global $idButton_4
Global $idButton_5
Global $idButton_11
Global $idButton_12
Global $idButton_13
Global $idButton_14
Global $idButton_15
Global $idButton_16
Global $idButton_17
Global $idButton_18
Global $idButton_19
Global $idButton_20
Global $idButton_21
Global $idButton_22
Global $idButton_23
Global $idButton_24
Global $idButton_32
Global $idButton_33
Global $idButton_34
Global $idButton_35
Global $idButton_36
Global $idButton_37
Global $idButton_38
Global $idButton_39
Global $idButton_40
Global $idButton_41
Global $idButton_44
Global $idButton_45
Global $idButton_46
Global $idButton_47
Global $idButton_48
Global $idButton_51
Global $idButton_52
Global $idButton_53
Global $idButton_54
Global $idButton_55
Global $idButton_56
Global $iServiceStatusLabel = ""
; processing -------------------------------------------------------------------
FileInstall("C:\Users\Rickl\Pictures\DSC04006.jpg", "C:\Windows\Temp\hg.jpg", 1)
Global $hGui = RBoxCreate("LAC WartungsTool Beta", 840, 600)
_createLabels()
_createButtons()
;~ GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660)
While True
CheckX($hGui, $RBOX_EVENT_CLOSE, "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0xA3A3A3)", "GuiCtrlSetColor(" & $RBOX_EVENT_CLOSE & ",0x555555)")
$gMsg = GUIGetMsg()
Switch $gMsg
Case $GUI_EVENT_CLOSE, $RBOX_EVENT_CLOSE
GUIDelete($hGui)
Exit
Case $idButton_1
$iPID = Run($sScriptRootFolder & "PC-Einrichtung\PCSETTING_listv2.cmd", "", 10)
Case $idButton_2
$iPID = Run($sScriptRootFolder & "CustomCOPY.bat", "", 10)
Case $idButton_3
MsgBox(0, "", 3)
Case $idButton_4
Global $filename = "C:\Program Files\Notepad++\notepad++.exe"
If FileExists($filename) Then
$prog = ShellExecute($filename, "C:\Windows\start\RegWerte_setzen.reg", "", "open", @SW_SHOW)
Else
;~ $prog = ShellExecute("C:\Windows\start\RegWerte_setzen.reg","","open",@SW_SHOW)
$prog = ShellExecute('notepad.exe', 'C:\Windows\start\RegWerte_setzen.reg')
EndIf
Case $idButton_5
$iPID = SoundPlay($BeepFile)
Case $idButton_11
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_12
$iPID = RunWait(Run(@ComSpec & " /c " & $sScriptRootFolder & "CreateTasks.cmd"))
;~ RunWait(@ComSpec & " /c " & $sScriptRootFolder & "CreateTasks.cmd")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_13
$iPID = RunWait(Run(@ComSpec & " /c " & $sScriptRootFolder & "ETC\ProxyStandard.cmd"))
;~ RunWait(@ComSpec & " /c " & $sScriptRootFolder & "ETC\ProxyStandard.cmd")
SoundPlay($BeepFile)
Case $idButton_14
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "TestTOOLS\WuReset.bat")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_15
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\WinUpd.cmd")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_16
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "ETC\OfficeRegister.cmd ")
;~ $iPID = Run($sScriptRootFolder & "PC-Einrichtung\AddedApps.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_17
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\Soft\officeKill.cmd", "", 10)
SoundPlay($BeepFile)
Case $idButton_19
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\TOOLS\TOOLS\AppsRepair.bat", "", 10)
SoundPlay($BeepFile)
Case $idButton_36
Local $sServiceName = "TermService"
GUICtrlSetData($iServiceStatusLabel, $sServiceName & ": " & Request_Service($sServiceName))
Case $idButton_39
$iPID = Run(@ComSpec & " /c " & $sScriptRootFolder & "Ordner_leeren.cmd")
;~ RunWait(@ComSpec & " /c " & $sScriptRootFolder & "Ordner_leeren.cmd")
;~ SoundPlay($BeepFile)
Case $idButton_40
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "Datentraegerbereinigung\Dtclean.bat")
$iPID = SoundPlay($BeepFile)
Case $idButton_41
RunWait(@ComSpec & " /c " & $sScriptRootFolder & "PC-Einrichtung\TestGeraete.cmd")
_SQL()
;~ MsgBox(0,"", "Es existiert eine Variable mit dem Namen: " & $st ) ;<= hier soll der name der variable stehen, nicht der wert
$iPID = SoundPlay($BeepFile)
Case $idButton_47
;~ ShellExecute($sScriptRootFolder & "Windows10Upgrade9252.exe")
RunWait($sScriptRootFolder & "Windows10Upgrade9252.exe")
$iPID = SoundPlay($BeepFile)
FileDelete("C:\Users\Riegert\Desktop\Windows 10-Update-Assistent.lnk")
Case $idButton_53
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
RunWait(@ComSpec & " /c " & "V:\Austausch-Daten\Riegert\inv2\CSV-Merge10.bat")
$iPID = SoundPlay($BeepFile)
Case $idButton_54
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
RunWait(@ComSpec & " /c " & "V:\Austausch-Daten\Riegert\inv2\CSV-Merge_Short.bat")
$iPID = SoundPlay($BeepFile)
Case $idButton_55
GUICtrlSetTip(-1, "Inventar-Liste")
ShellExecute("\\ds1\Freigaben\Referat_5_Informationstechnologie\51_Hardware_und_Software\511_Inventare\5112_Invertarliste_Hardware\Hardware\Inventarliste Hardware.xls")
$iPID = SoundPlay($BeepFile)
Case $idButton_56
GUICtrlSetTip(-1, "Inventarisierungs-Script ausführen")
Local $sTaskName = '_07_DataCollect'
;~ RunWait("schtasks /Run /TN ' & "$sTaskName"')
;~ RunWait('schtasks.exe /Run /TN ' & $sTaskName, '', @SW_HIDE)
$iPID = SoundPlay($BeepFile)
EndSwitch
WEnd
; functions --------------------------------------------------------------------
Func _createLabels()
GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local SQL-Server: " & _SQL(), 10, 35, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($PCName, 610, 290, 980, 30)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 19, 800) ; bold
GUICtrlCreateLabel($WinBuild, 610, 330, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($WinDisplayVers, 610, 350, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($AugVers, 610, 370, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel($WinName, 610, 390, 980, 30)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel(" Web-Server : " & _Webserver(), 643, 50, 980, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 800) ; bold
GUICtrlCreateLabel("Einzelmodule", 10, 115, 780, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 900) ; bold
GUICtrlCreateLabel("System-Wartung und Checks", 10, 220, 780, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 900) ; bold
GUICtrlCreateLabel("Datenbank", 10, 420, 780, 20)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 9, 900) ; bold
$iServiceStatusLabel = GUICtrlCreateLabel("Service", 10, 440, 780, 20)
EndFunc
Func _createButtons()
$idButton_1 = GUICtrlCreateButton("Customize PC", 10, 55, 100, 20)
GUICtrlSetTip(-1, "Standard Image an Benutzer anpassen")
$idButton_2 = GUICtrlCreateButton("Image-Prepare", 130, 55, 100, 20)
GUICtrlSetTip(-1, "Vorinstallaierte Windows Version anpassen -> Image")
$idButton_3 = GUICtrlCreateButton("DL aktualisieren", 250, 55, 100, 20)
$idButton_4 = GUICtrlCreateButton("RegSettings", 370, 55, 100, 20)
$idButton_5 = GUICtrlCreateButton("TEST", 490, 55, 85, 20)
$idButton_11 = GUICtrlCreateButton("Standard Software", 10, 135, 100, 20)
$idButton_12 = GUICtrlCreateButton("Aufgaben", 130, 135, 100, 20)
$idButton_13 = GUICtrlCreateButton("Standard Proxies", 250, 135, 100, 20)
$idButton_14 = GUICtrlCreateButton("WinUpd Reset", 370, 135, 100, 20)
$idButton_15 = GUICtrlCreateButton("UPDATES", 490, 135, 100, 20)
$idButton_16 = GUICtrlCreateButton("Office registrieren", 610, 135, 100, 20)
$idButton_17 = GUICtrlCreateButton("Office Kill", 730, 135, 100, 20)
$idButton_18 = GUICtrlCreateButton("Domäne out/in", 10, 160, 100, 20)
$idButton_19 = GUICtrlCreateButton("APPS reparieren", 130, 160, 100, 20)
$idButton_20 = GUICtrlCreateButton("", 250, 160, 100, 20)
$idButton_21 = GUICtrlCreateButton("", 370, 160, 100, 20)
$idButton_22 = GUICtrlCreateButton("", 490, 160, 100, 20)
$idButton_23 = GUICtrlCreateButton("", 610, 160, 100, 20)
$idButton_24 = GUICtrlCreateButton("", 730, 160, 100, 20)
$idButton_32 = GUICtrlCreateButton("ggg", 10, 185, 100, 20)
$idButton_33 = GUICtrlCreateButton("", 130, 185, 100, 20)
$idButton_34 = GUICtrlCreateButton("", 250, 185, 100, 20)
$idButton_35 = GUICtrlCreateButton("", 370, 185, 100, 20)
$idButton_36 = GUICtrlCreateButton("gfgf", 490, 185, 100, 20)
$idButton_37 = GUICtrlCreateButton("VB ON temp", 610, 185, 100, 20)
$idButton_38 = GUICtrlCreateButton("VB OFF", 730, 185, 100, 20)
$idButton_39 = GUICtrlCreateButton("PC-CLEAN", 10, 240, 100, 20)
$idButton_40 = GUICtrlCreateButton("Win bereinigen", 130, 240, 100, 20)
$idButton_41 = GUICtrlCreateButton("Geräte Check", 250, 240, 100, 20)
$idButton_44 = GUICtrlCreateButton("", 610, 240, 100, 20)
$idButton_45 = GUICtrlCreateButton("", 730, 240, 100, 20)
$idButton_46 = GUICtrlCreateButton("Win RESET!", 10, 265, 100, 20)
$idButton_47 = GUICtrlCreateButton("Win Update Ass.", 130, 265, 100, 20)
$idButton_48 = GUICtrlCreateButton("", 250, 265, 100, 20)
$idButton_51 = GUICtrlCreateButton("MKLINK EPIC", 610, 265, 100, 20)
$idButton_52 = GUICtrlCreateButton("", 730, 265, 100, 20)
$idButton_53 = GUICtrlCreateButton("PC-List long", 490, 340, 100, 20)
$idButton_54 = GUICtrlCreateButton("PC-List short", 490, 365, 100, 20)
$idButton_55 = GUICtrlCreateButton("Inventar Liste", 490, 390, 100, 20)
$idButton_56 = GUICtrlCreateButton("Inventarisieren", 490, 315, 100, 20)
EndFunc
Func RBoxCreate($Title, $width, $height, $left = -1, $top = -1, $show = 1)
Local $GUI = GUICreate($Title, $width, $height, $left, $top, $WS_POPUP)
GUISetBkColor($GUIBKCOLOR, $GUI)
;~ _GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES)
$RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X', $width - 20, 3, 25, 25)
GUICtrlSetCursor($RBOX_EVENT_CLOSE, 0)
GUICtrlSetBkColor($RBOX_EVENT_CLOSE, -2)
GUICtrlSetFont($RBOX_EVENT_CLOSE, 15, 800)
GUICtrlSetColor($RBOX_EVENT_CLOSE, 0x555555)
$Title &= " "
Local $hTitle = GUICtrlCreateLabel($Title, 0, 0, $width - 20, 26, $SS_CENTER, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont($hTitle, 17, 400, 0, "Consolas")
GUICtrlSetBkColor($hTitle, -2)
Local $Graphic = GUICtrlCreateGraphic(0, 0, $width, 25)
GUICtrlSetState($Graphic, $Gui_DISABLE)
;~ GradientFill($Graphic, 0, 0, $width, 25, $ARRAY_COLOR_TOP_MIN, $ARRAY_COLOR_TOP_MAX)
If $show = 1 Then GUISetState(@SW_SHOW, $GUI)
Return $GUI
EndFunc
Func CheckX($hGui, $CtrlID, $sCMD, $eCMD)
Local $cGui = GUIGetCursorInfo($hGui)
If Not IsArray($cGui) Then
Return 0
EndIf
If $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd", $cGui[4])
If $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd", $cGui[4])
EndFunc
Func _SQL()
Local $st = False
Local $FileText ; fehlt!
Local Const $SeviceName = "SQL Server (AUGIAS)" ; name of the service to test ; Local Const fehlte
RunWait(@ComSpec & " /c net start > c:\temp\services.txt", "", @SW_HIDE) ; send a list of the services that are running to a file
; hier würde eine Prüfung Sinn machen
$FileText = FileRead("c:\temp\services.txt", FileGetSize("c:\temp\services.txt")) ; read that file
If StringInStr($FileText, $SeviceName) Then ; check for the service name
$st = "RUNNING" ; ich würde True wählen
Else
$st = "OFF" ; ich würde False wählen
EndIf
Return $st
EndFunc
Func _Webserver()
Local $ws ; fehlt! und ich würde es hier direkt als = False setzen!
Local $FileText ;fehlt!
Local Const $SeviceName = "Apache2.4"
RunWait(@ComSpec & " /c net start > c:\temp\services.txt", "", @SW_HIDE)
; hier würde eine Prüfung Sinn machen
$FileText = FileRead("c:\temp\services.txt", FileGetSize("c:\temp\services.txt")) ; read that file
Local $st
If StringInStr($FileText, $SeviceName) Then ; check for the service name
$st = "RUNNING" ; ich würde True wählen
Else
$st = "OFF" ; ich würde False wählen
EndIf
Return $st
EndFunc
;;;;;;;;; wie am besten per parameter servicename in ein Label einbinden ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Request_Service($Servicename)
If _Service_Exists($Servicename) Then
Return Status(_Service_QueryStatus($Servicename)[1])
Else
Return 'Service does not exist'
EndIf
EndFunc
Func Status($Status)
Switch $Status
Case 1
$Status = 'SERVICE_STOPPED'
Case 2
$Status = 'SERVICE_START_PENDING'
Case 3
$Status = 'SERVICE_STOP_PENDING'
Case 4
$Status = 'SERVICE_RUNNING'
Case 5
$Status = 'SERVICE_CONTINUE_PENDING'
Case 6
$Status = 'SERVICE_PAUSE_PENDING'
Case 7
$Status = 'SERVICE_PAUSED'
Case Else
$Status = 'SERVICE_UNKNOWN_STATE'
EndSwitch
Return ($Status)
EndFunc
Alles anzeigen
Und diesen Abhängigkeiten/UDFs hier, funktioniert die Aktualisierung nach Statusänderung wunderbar.
- Also mit dem Klick auf Button mit Label "gfgf" wird der Status angezeigt.
- Wenn du einen Dienst stoppst, im Beispiel von TermService (Remote Desktop Services) wie im Code, wird von SERVICE_RUNNING zu SERVICE_STOPPED aktualisiert.
- Namen der Dienste können abweichen, ich arbeite mit einem englischen Windows.
Bitte stelle sicher, dass du den selben Code und die selben UDFs verwendest! Wenn das bei dir passt, zeige ich dir wie das mit den Intervall funktioniert 😉 .
Viele Grüße
Sven
Hi und bitteschön Oscar ,
freut mich das es nun klappt - besser aussieht 😁 🎉 .
hi MojoeB ,
wenn der VSCode-Einstieg tatsächlich problematisch sein sollte, schreibe ich mal was zusammen. Wartet aber bitte nicht darauf, das mache ich sobald ich die Kapazität dazu habe 😉 .
Das TODO habe ich schon mal auf mein "Planning-Board" aufgenommen 🤭 .
Noch mal zu dir BugFix :
Farbdesign "Tomorrow Night Blue"
Ich nutze übrigens One Dark Pro was mir neben AutoIt insbesondere bei anderen Sprachen super gefällt.
Viele Grüße
Sven
Hi nochmal,
Ja, das sind so Paradigmen, die oft als unverrückbar dargestellt werden (wie z. B. auch die 80-Zeichen Zeilenlänge in Python) [...]
Ja da gebe ich dir Recht, manchmal sollte man diese Dinge hinterfragen, klar.
Zum Punkt "Gewohnheitssache" => absolut, stimme ich zu.
[...] aber trotzdem kein vollständiges Syntax highlighting [...]
Hmm, vielleicht komme ich mal dazu 'nen kleines Tutorial dazu zu schreiben. Wirklich klein, damit die erste Hürde gering ist.
Meine Frage wäre jetzt eher, ob man eigene Snippets einbauen kann?
Ja klar 😀 , einfach [F1] > ">snippets" > "Preferences: Configure User Snippets" > "AutoIt" auswählen und Snippet in JSON Syntax einfügen.
{
"AddBackslashToPathEnd": {
"body": [
"Func _addBackslashToPathEnd($$sPath)",
" If StringRight($$sPath, 1) <> '\\' Then $$sPath &= '\\'",
"",
" Return $$sPath",
"EndFunc"
],
"description": "Ensure trailing backslash for a path.",
"prefix": "!au3_addBackslashToPathEnd"
}
}
Alles anzeigen
Wichtig dabei ist nur, dass ein "$" Zeichen durch "$$" ersetzt wird. Speichern und du kannst dein Snippet zu deiner Sprache (in unserem Fall AutoIt) aufrufen und verwenden.
Zitat von OscarAber ich werde für AutoIt wohl doch bei SciTE4AutoIt bleiben.
Dein gutes Recht, wenn auch schade 😁 .
Viele Grüße
Sven
Hi AspirinJunkie ,
Danke auch dir 😀 . Zugegebenermaßen hat mir Melba23 (aus dem englischen Forum) ebenfalls solch einen Hinweis gegeben bzgl. "Au3Stripper". Werde mich damit mal etwas näher beschäftigen.
Diese Ansätze sollten deutlich besser sein, als sich bestimmte Funktionen daraus als Snippets reinzubauen.
Zum einen bläht man sich eine Datei auf anstatt bestimmte Funktionalitäten in Module ausgelagert zu haben [...]
Persönlich gefällt mir der Snippet-Ansatz besser doch darüber kann man sicher streiten. Allerdings muss das einfügen eines Snippets nicht bedeuten, dass man nicht trotzdem in "Modulen" arbeiten kann. Es sollte sich sogar ergänzen bestenfalls. Ich versuche diesen Ansatz der Projektstruktur (auslagern in Modulen) in (fast) all' meinen Projekten zu berücksichtigen wie bspw. hier oder hier (jeweils im src Ordner).
[...] zum anderen gibt es in UDFs auch oft zig Seitenabhängigkeiten wie z.B. zu bestimmten Konstante
Das stimmt, jedoch sollen die Snippets solche UDF Klassen nicht komplett ersetzen, dass können sie auch gar nicht, genau aus den von dir genannten Gründen. Ein Snippet ist aus meiner Sicht eher eine abgeschlossen Funktion mit bestenfalls nur einer Aufgabe. Auch wenn einige meiner bisherigen Snippets nicht ganz dahingehen passen 🧐 .
Danke für die Anregungen und Einschätzungen. Da habe ich was zum grübeln 😁 .
Viele Grüße
Sven
Hi BugFix ,
Danke für dein Feedback 😀 . Kann ich nachvollziehen das du dir gern mit Lua SciTE nach deinen Bedürfnissen anpasst und dir entsprechend alles so konfigurierst wie du es magst.
Für mich war die Umstellung anfangs auch nicht über Nacht die richtige Entscheidung, doch mittlerweile ist VSCode so anpassbar, ähnlich oder sogar mehr noch als SciTE (je nach Bedarf natürlich), dass ich die Arbeit damit nicht missen wöllte. Insbesondere für den Fakt: "Ein Editor für (nahezu) alles" 😉 .
hi Oscar ,
auch dir Danke für dein Feedback 👍 . Also ich nutze die Extension von Damien "Autoit", welche seit über einem Jahr von @loganch (englisches Forum) weitergeführt und maintained wird.
damien-autoit-loganch.png
Diese hat vollständiges Syntax highlighting, IntelliSense und andere Spielereien (ansonsten wäre ich bei SciTE geblieben). Kann sein das du da noch etwas konfigurieren musst, doch soweit ich mich erinnere war das fast nix 😳 . AutoIt by 4ern ist nicht so gut bzw. wird nicht mehr gepflegt soweit ich weiß. Bitte nicht beide Extensions gleichzeitig aktiv haben, dass kann ggf. schon dein fehlendes Syntax highlighting erklären.
Deine Snippetsammlung ist recht umfangreich, wenn auch manche Einzeiler überflüssig erscheinen (IMHO).
Da geb' ich dir absolut Recht 😁 , manches ist ziemlich alt und vielleicht sogar überflüssig. Manches davon nutze ich (und hoffentlich auch viele andere Leute) regelmäßig.
Die vielen Leerzeilen in den Funktionen finde ich persönlich eher zu viel, aber das ist auch Geschmackssache.
Ja Geschmackssache schon, aber nur bedingt. Ich bin durch .NET ziemlich auf Übersichtlichkeit, Lesbarkeit und andere Clean Code Askpekte getrimmt, daher sehen die Funktionen so aus.
Kann man die Snippets anpassen?
Wenn ich sie anpasse bzw. ein Contributer, wirkt sich dies auf alle die die Extension in VSCode eingebunden haben aus. Falls deine Frage darauf abzielt?
Ansonsten steht es dir natürlich frei, nachdem du die jeweilige Funktion bei dir verwendest/eingefügt hast, diese von Leerzeilen zu befreien 😂 .
Viele Grüße
Sven
Hi Leute,
kleiner push zu diesem Thema 😅 .
Gibt es Meinungen, Pros und Contras, Wünsche, Ideen etc.? Freue mich wirklich über Feedback dazu (auch wenn dies evtl. negativ ausfällt).
Danke euch 🤞 .
Viele Grüße
Sven
Hi Bitnugger ,
es bleibt jedem selbst überlassen wie viel Geduld und Hilfsbereitschaft er aufbringen möchte, auch wenn du von der Geduld deiner angesprochenen Leuten profitiert hast 😀 .
Schließlich funktioniert das Forum auf rein freiwilliger Basis.
Lasst uns bitte nicht zu sehr in philosophische bzw. auch erwartungsgetriebene Überlegungen abtrifften (ich ertappe mich gelegentlich selbst dabei 😊).
Fakt ist doch das man entweder casi4712 weiter hilft und unterstützt oder nicht. Ich für meinen Teil biete mit post #43 dazu nochmal meine Hilfestellung an, wenn auch evtl. die Letzte dazu.
Viele Grüße
Sven
Hi casi4712,
also Chris, ich habe mir jetzt mal richtig viel Arbeit gemacht und hoffe das hilft dir auch für die Zukunft 🤞 .
Am Ende meiner gleich folgenden Ausführungen (Punkt 4) habe ich dir ein Beispiel bzgl. deiner Frage zur Aktualisierung eines Labels mit in den Code gepackt 😀 .
Okay, legen wir los:
Nun liegt es an dir 😉 .
- Mein Vorschlag ist es, dass du ab jetzt diesen Code als Ansatzpunkt nimmst und deine folgenden Änderungen/Erweiterungen dort einarbeitest.
- Dann kann jeder andere der dir hier helfen will die von mir aktualisierten Änderungen nutzen und hat hoffentlich 🤞 den gleichen Stand wie du zu Verfügung.
Was meinst du Chris? Okay?
📂 Download => Für die die sich das Repository nicht per "git clone" auschecken, hier der stehts aktuelle Download dazu 😎 .
Viele Grüße
Sven
Hi casi4712,
abgesehen davon, dass ich absolut hinter den Ausführungen und Empfehlungen von BugFix stehe, möchte ich dich nochmal bitten deinen aktuellen und vollständigen Code-Stand zu posten. Auch deine Abhängigkeiten, bspw. "Services.au3" oder "Service.au3", je nach dem was du nun verwendest.
Warum:
Damit wir besser helfen können. Ich möchte mir nicht immer erst deinen vermeintlichen Code-Stand zusammensuchen müssen 😉 . Respekt an Moombas an dieser Stelle, der dies offensichtlich tut 😁 .
Stelle bitte einfach alles bereit (die Abhängigkeiten einfach als Anhang) und dann bekommst du sicherlich noch mehr und zügige Hilfestellung. Danke.
Viele Grüße
Sven
Hi casi4712, hi BugFix,
Direkter Austausch ist nicht ohne Weiteres machbar. Aber warum überhaupt Batch? Erledige doch alles in AutoIt.
Genau das hatte ich dich bereits im post #10 gefragt Chris.
pasted-from-clipboard.png
Desweiteren schreibst du:
Aber ich findes es schon angsteinflößend, dass man zig Zeilen Code benötigt um einen Dienststatus abzufragen und in eine Variable zu stecken, ich fand am Anfang ja PS schon kompliziert. Gibt es da wirklich keine kürzeren Ansätze?
Die gibt es sehr wahrscheinlich, doch dazu solltest du dein Ziel erläutern.
Denn ansonsten sehe ich die Konversation hier als ping-pong in gefühlter Endlosschleife 🙁 .
Viele Grüße
Sven