1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. SOLVE-SMART

Beiträge von SOLVE-SMART

  • ShelExecution und @HIDE

    • SOLVE-SMART
    • 30. Januar 2022 um 13:41

    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

  • Script zum Hochladen von Dateien auf einen Server

    • SOLVE-SMART
    • 30. Januar 2022 um 13:37

    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

  • ShelExecution und @HIDE

    • SOLVE-SMART
    • 30. Januar 2022 um 13:31

    Hi casi4712 ,

    Zitat von 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.

    Zitat von Schnuffel

    [...] das Problem liegt schon in den Aufurfparametern für Robocopy [...]

    Darauf wollte ich hinaus mit meiner Aussage:

    Zitat von SOLVE-SMART

    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:

    • Nutzt du SciTE oder VSCode als Editor casi4712 ? Falls nicht tue dies unbedingt. Allein das Syntax highlighting sollte dir einige potenzielle Probleme zeigen können.
    • Anonsten STRG+F5 immer mal zwischendurch ausführen und schauen was der "Check" in der Console ausgibt.
    • Helfen würde es uns auch, wenn du den Consolen-Output bei Fehlern hier postest, dann geht es evtl. noch schneller/genauer.

    Viele Grüße

    Sven

  • ShelExecution und @HIDE

    • SOLVE-SMART
    • 29. Januar 2022 um 22:19

    Hallo casi4712 ,

    hier mal eine Kombination aus dem was Oscar vorgeschlagen hat und einer alten Funktion "_runProgram()" zum Aufruf eines externen Programmes:

    AutoIt
    _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:

    • Im Beispielcode ist Zeile 9 aktiv (nicht auskommentiert). Du bekommst nur den Aufruf von "_runProgram()" mit Parametern in der Console ausgegeben.
    • Wenn du stattdessen Zeile 10 aktivierst, dann wird dein Aufruf wirklich ausgeführt, mit sichtbaren CMD Fenster und es wird gewartet bis du CMD manuell schließt.
    • Wenn du stattdessen Zeile 11 aktivierst, dann wird dein Aufruf ebenfalls ausgeführt, aber unsichtbar und CMD wird automatisch nach Programmausführung geschlossen.

    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

  • Abfrageergebnisse in Datei/Datenbank schreiben/lesen

    • SOLVE-SMART
    • 28. Januar 2022 um 17:36

    Hi Lashandan ,

    Zitat
    671-e2d75074477521f677908797550b456163b2c1a8.png Zitat von Lashandan Als nächstes sollen die Daten, sofern vorhanden, direkt nach der Auswahl des Rechners im DropDownMenü, im GUI ausgegeben werden.

    Klingt logisch 😀 .

    Zitat von Lashandan

    Ich melde mich wieder

    Davon gehe ich mal aus 😅 , gerne.


    Viele Grüße
    Sven

  • Buttons klickbar machen

    • SOLVE-SMART
    • 28. Januar 2022 um 15:57

    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:

    Spoiler anzeigen
    AutoIt
    ; 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

  • Abfrageergebnisse in Datei/Datenbank schreiben/lesen

    • SOLVE-SMART
    • 28. Januar 2022 um 12:02

    Hi Lashandan ,

    Zitat von 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:

    AutoIt
    ; 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

  • Abfrageergebnisse in Datei/Datenbank schreiben/lesen

    • SOLVE-SMART
    • 28. Januar 2022 um 10:49

    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.

    Zitat von Lashandan

    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?

    AutoIt
    _GUICtrlComboBoxEx_AddString()



    Viele Grüße
    Sven

  • Buttons klickbar machen

    • SOLVE-SMART
    • 26. Januar 2022 um 19:44

    Hi casi4712 ,

    ausgehend von diesem Code-Stand:

    Spoiler anzeigen
    AutoIt
    ; 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

  • Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

    • SOLVE-SMART
    • 26. Januar 2022 um 19:03

    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 :

    Zitat von 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

  • Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

    • SOLVE-SMART
    • 26. Januar 2022 um 16:56

    Hi nochmal,

    Zitat von BugFix

    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.

    Zitat von Oscar

    [...] 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.

    Zitat von Oscar

    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.

    Code: Beispiel
    {
        "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 Oscar

    Aber ich werde für AutoIt wohl doch bei SciTE4AutoIt bleiben.

    Dein gutes Recht, wenn auch schade 😁 .

    Viele Grüße

    Sven

  • Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

    • SOLVE-SMART
    • 26. Januar 2022 um 16:44

    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.

    Zitat von AspirinJunkie

    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).

    Zitat von AspirinJunkie

    [...] 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

  • Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

    • SOLVE-SMART
    • 26. Januar 2022 um 15:56

    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.

    Zitat von Oscar

    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.

    Zitat von Oscar

    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.

    Zitat von Oscar

    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

  • Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

    • SOLVE-SMART
    • 26. Januar 2022 um 13:11

    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

  • Buttons klickbar machen

    • SOLVE-SMART
    • 26. Januar 2022 um 13:05

    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

  • Buttons klickbar machen

    • SOLVE-SMART
    • 25. Januar 2022 um 22:48

    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:

    1. Ich habe ein GitHub repository AutoIt-Forums-Help angelegt um an Hand deines Beispiels/Problems hier (immerhin sind wir bereits bei post #42) den Fortschritt deutlich zu machen.
      01.png
    2. Für dein Thema 87580-buttons-klickbar-machen gibt es dort einen Ordner in denen dein Skript liegt (benannt mit Main.au3) sowie die Abhängigkeiten (die Skripte die ich mir hier zusammengesucht habe bzw. die von den anderen teilweise zu Verfügung gestellt wurden).
      02.png
    3. In der Historie der Codeänderungen (der Commits) siehst du welche Schritte ich getan habe um dein Skript zu verbessern, etwas Struktur aufzubauen und vorhandene Fehler zu beseitigen.
      03.png
    4. Wenn du nun auf den Button gfgf klickst (Zeile 169, "$idButton_36") wird der Label-Text Service (Zeile 263, "$iServiceStatusLabel") durch den gefundenen Status der Funktion Request_Service() ersetzt.


      04.png
    5. Wichtig ist, dass du das Label welches du später noch bearbeiten willst mit einer globalen Variable außerhalb der Funktion _createLabels() vorher deklarierst (Zeile 85).
    6. Was ich alles nicht gemacht habe: Variablenbenennung angepasst, Abstraktion verbessert etc.


    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

  • Buttons klickbar machen

    • SOLVE-SMART
    • 25. Januar 2022 um 13:15

    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

  • Buttons klickbar machen

    • SOLVE-SMART
    • 24. Januar 2022 um 10:20

    Hi casi4712, hi BugFix,

    Zitat von 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:

    Zitat von casi4712

    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

  • Buttons klickbar machen

    • SOLVE-SMART
    • 24. Januar 2022 um 08:07

    Hallo casi4712 (Chris),


    ich darf mich Oscar anschließen und darauf hinweisen das dein ganzes Skript benötigt wird, um zügig zu helfen bzw. ggf. auch andere Fehler gleich mit aufzudecken.
    Auch wenn du schreibst das du Foren durchsuchst (u.a. dieses hier) um nicht gleich fragen zu müssen und dir viel Mühe insgesamt machst, ist es wünschenswert wenn du mehr auf die Vorschläge der Helfenden hier eingehst.

    Zwei Beispiele:
    1. Dein Syntaxfehler bzw. das Nachfragen danach (Post #19) bei Velted siehst du wenn du die beiden Versionen vergleichst (bestenfalls über ein "Diff") wie bspw.:



    Oder du versuchst mehr auf die Consolenausgabe/den Output zu achten, dort wirst du auch darauf hingewiesen 🧐 .

    2. Bzgl. deines aktuellen Fehlers

    Zitat

    Error:Variable used without beeing declared

    Ohne das gesamte Skript, kann man dazu nicht viel sagen. Es ist also notwendig das du das Skript postest und bestenfalls den Output (Consolenausgabe), denn dort wird ebenfalls per Zeilennummer darauf hingewiesen, um welche Variable es sich handelt.

    Es liegt nahe, genau wie Moombas beschreibt, dass falls du den Code nicht diesbzgl. verändert hast, du auf den Variablenscope achten musst (siehe post #12, da dort folgendes hinzu kam und dort auch die fehlenden Scopes von mir definiert wurden):

    pasted-from-clipboard.png

    Dies bekommst du ebenfalls im Output gesagt - welche Stelle es betrifft.

    Fazit:
    Es soll dich nicht abschrecken weiter Fragen zu stellen, doch beschäftige dich bitte zunächst mit den Hilfestellungen die dir sowieso gegeben sind und wenn du dann nicht weiter kommst, poste die vollständigen Informationen, Danke.

    Viele Grüße

    Sven

  • Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

    • SOLVE-SMART
    • 22. Januar 2022 um 22:47

    Hi Leute,

    ich persönlich empfand es immer unsauber oder einfach unschön ganze UDFs in sein Skript oder Projekt einzubinden, in Fällen in denen man nur einzelne Funktionen daraus benötigt. Das beim kompilieren die *.exe entsprechend größer wird, ist heutzutage oft kein Problem mehr oder man stört sich daran einfach nicht mehr - ich hingegen schon irgendwie 😅 .

    Daher habe ich mir früher aus den UDFs die einzelnen Funktionen in mein Skript übernommen, damit ich nicht die ganze UDF einbinden (#include) musste.
    Je nach Lizenz, habe ich die Namensnennung der UDF Ersteller oder der Mitwirkenden in den Credits oder Ähnlichem festgehalten, damit es fair bleibt.

    Dann kam die Veränderung:
    Ich lernte Visual Studio Code (VSCode) beruflich kennen, erst für andere Sprachen, dann auch für AutoIt. Mit der schnell besser werdenden und heutzutage sehr mächtigen IntelliSense (code completion) von VSCode kam mir eine Idee.

    Einfach und schnell:
    Funktionen, welche ich oft brauche oder in irgendwelchen (eigenen) UDFs liegen habe, hinterlege ich in Snippet Dateien und kann diese schnell bei Bedarf in das jeweilige Skript oder Projekt einfügen. Wichtig ist mir aber, dass ich auf die Funktionen die in den Snippets liegen von überall zugreifen kann - an meinen privaten Rechner, auf Arbeit oder bei einem Kollegen/Freund. Daher erstellte ich eine VSCode Extension 😀 .

    VSCode-AutoItSnippets:
    Falls du deine AutoIt Projekte ebenfalls mit VSCode umsetzt, dann könnte dich meine AutoIt Snippets Extension dazu interessieren oder dir sogar helfen deine Projekte schneller umzusetzen.

    • Mich würde es sehr freuen wenn ihr einen Blick über das Projekt werfen könntet.
    • Natürlich interessiert mich eure Meinung dazu sowie auch ob der Eine oder Andere seine Funktion(en) teilen möchte und ebenfalls in der Extension verewigt haben möchte 🧐 .
    • Falls dies interessant für euch sein sollte, dann könnt ihr gerne
      • per Pull Request eure Funktionen hinzufügen,
      • oder sie einfach hier schreiben, damit ich sie in die Snippet Dateien aufnehmen kann,
      • oder ihr schreibt mit eine private Nachricht oder Email.
    • Ich bin gespannt ob das hilfreich für euch sein kann, denn immerhin gibt es bereits über 500 Installationen der Extension, was mich freut 😁 .


    So sieht das in der Praxis/Verwendung dann aus:

    https://github.com/Sven-Seyfert/V…ippets#features

    Viele Grüße

    Sven

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™