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

  • 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

  • Buttons klickbar machen

    • SOLVE-SMART
    • 21. Januar 2022 um 17:13

    Hi nochmal,

    Zitat

    Hätte jetzt nicht gedacht dass es solche Schwierigkeiten macht da ein paar Cases reinzubekommen.

    Nein natürlich ist das kein großes Problem. Hier mal eine klein wenig abgewandelte Variante deines bisherigen Skriptes, die "funktioniert":

    Mit klickbaren Buttons und Schließen-X
    AutoIt
    #include-once
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <String.au3>
    #include <WindowsConstants.au3>
    
    Opt("MustDeclareVars", 1)
    
    FileInstall("C:\Users\Riegert\Pictures\DSC04006.JPG", "C:\Windows\Temp\hg.jpg", 1)
    
    Global $ROUNDES = 20, $LastHwnd = 0
    Global $GUIBKCOLOR = 0x3D96F6
    Global $ARRAY_COLOR_TOP_MIN[3] = [36, 65, 142], $ARRAY_COLOR_TOP_MAX[3] = [11, 42, 122]
    Global $RBOX_EVENT_CLOSE
    Global $GUI
    
    _SQL()
    
    RBoxCreate("PC  INTEGRATOR Version 4.0", 800, 600)
    
    Global $idButton_1 = GUICtrlCreateButton("Customize PC", 10, 55, 100, 20)
    Global $idButton_2 = GUICtrlCreateButton("Image-Prepare", 130, 55, 100, 20)
    Global $idButton_3 = GUICtrlCreateButton("DL aktualisieren", 250, 55, 100, 20)
    Global $idButton_4 = GUICtrlCreateButton("RegSettings", 370, 55, 100, 20)
    Global $idButton_5 = GUICtrlCreateButton("Customize PC", 490, 55, 85, 20)
    
    Local $iPID = 0
    
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $RBOX_EVENT_CLOSE
                GUIDelete($GUI)
                Exit
    
            Case $idButton_1
                MsgBox(0, "", 1)
                ;  Run Notepad with the window maximized.
                ;~ $iPID = Run("C:\Users\Administrator\Downloads\PC-Einrichtung\PCSETTING_listv2.cmd", "", 10)
    
            Case $idButton_2
                MsgBox(0, "", 2)
                ;~ $iPID = SoundPlay("C:\Users\xyz\Music\AUDIO\sampler\abc.wav")
    
            Case $idButton_3
                MsgBox(0, "", 3)
    
            Case $idButton_4
                MsgBox(0, "", 4)
    
            Case $idButton_5
                MsgBox(0, "", 5)
        EndSwitch
    WEnd
    
    Func RBoxCreate($Title, $width, $height, $left = -1, $top = -1, $show = 1)
        $GUI = GUICreate($Title, $width, $height, $left, $top, $WS_POPUP)
        GUISetBkColor($GUIBKCOLOR, $GUI)
        ;GUISetFont(9,  100, italic)
        GUISetFont(-1, 9, 900) ; bold
        GUICtrlCreatePic('C:\Windows\Temp\hg.jpg', 0, 25, 920, 660)
        ;GUICtrlCreatePic('C:\Users\Riegert\Pictures\DSC04006.JPG', 0, 25, 920, 660)
        $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, 0xFFFFFF)
        $Title &= " "
    
        ;LABELS
        GUICtrlCreateLabel("CUSTOMIZING" & _StringRepeat(" ", 185) & "Local DB-Server: &$st", 10, 35, 980, 20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlSetFont(-1, 9, 800) ; bold
    
        GUICtrlCreateLabel("Einzelmodule", 10, 120, 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
    
        GUICtrlCreateLabel("_____________________________________________________________________________________________________________________________________ ", 0, 95, 900)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlCreateLabel("_____________________________________________________________________________________________________________________________________ ", 0, 200, 900)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    
        GUICtrlCreateLabel("_____________________________________________________________________________________________________________________________________ ", 0, 400, 900)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    
        GUICtrlCreateLabel("_____________________________________________________________________________________________________________________________________", 0, 530, 900)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlCreateLabel("_____________________________________________________________________________________________________________________________________", 0, 555, 900)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        ;guictrlcreatelabel("You've completed " & $st & "runs.",100,25,100,25,$SS_CENTER)
    
        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)
    
        If $show = 1 Then GUISetState(@SW_SHOW, $GUI)
    EndFunc   ;==>RBoxCreate
    
    Func _SQL()
        Local $SeviceName = "SQL Server (AUGIAS)" ;name of the service to test
    
        RunWait(@ComSpec & " /c net start > c:\temp\services.txt", "", @SW_HIDE) ;send a list of the services that are running to a file
    
        Local $FileText = FileRead("c:\temp\services.txt", FileGetSize("c:\temp\services.txt")) ;read that file
        Local $st = null
    
        If StringInStr($FileText, $SeviceName) Then ;check for the service name
            $st = "RUNNING"
        Else
            $st = "OFF"
        EndIf
    EndFunc   ;==>_SQL
    Alles anzeigen


    Du schreibst außerdem noch:

    Zitat

    Ich entnehme Deiner Aussage dass das mit der CheckX Funktion durcheiander gerät.

    Ja, die habe ich komplett rausgenommen da sie nicht benötigt wird. Zudem gibt es jedoch aus meiner Sicht zwei weitere Probleme mit dem Skript so in dieser "Quick & Dirty" abgeänderten Variante.

    • Zum Einen solltest du einige Dinge trennen/neustrukturieren und dir eine Übersicht verschaffen wo was im Skript hingehört. So wie es jetzt ist sollte man es nicht lassen.
    • Zum Anderen ist es sehr wahrscheinlich, dass du bald mit dem nächsten Problem diesbzgl. auf uns zukommen wirst, da sich andere Codestellen nicht wie erwartet verhalten oder ähnliches (so meine Einschätzung dazu).

    Daher auch die gut gemeinten Vorschläge von Moombas und mir 😀 .

    Viele Grüße

    Sven

  • Buttons klickbar machen

    • SOLVE-SMART
    • 21. Januar 2022 um 16:19

    Hi casi4712,


    ich denke auch du solltest dir nicht zu viel auf einmal vornehmen und die Schritte wie von Moombas beschrieben erstmal Stück für Stück umsetzen und dazulernen 😀 .
    Dann fällt es sicherlich auch einfacher den Überblick zu bewahren und eine Struktur für dein Skript/Programm aufzubauen.

    Mal eine Frage zum Ziel:
    Sind die Aktionen die auf den Button-Klicks stattfinden sollen (deine Aufrufe diverser Skripte), bspw.:

    Zitat

    [...] PC-Einrichtung\PCSETTING_listv2.cmd [...]

    evtl. sogar in AutoIt umsetzbar und es ist gar nicht nötig das du andere Skripte aufrufst 🧐 ?
    Ich meine, wenn du dir nochmal überlegst was genau dein Ziel ist und es neu formulierst (falls es neu sein wird/sollte), dann können wir hier wahrscheinlich konkretere Vorschläge und Hilfestellungen leisten.


    Viele Grüße

    Sven

  • Webdriver Button drücken

    • SOLVE-SMART
    • 21. Januar 2022 um 00:56

    Hi Werner,

    wenn du mit "im Hintergrund arbeiten lassen" meinst, dass der Browser nicht zu sehen ist, dann nennt man dies "headless" bzw. headless mode.
    Hier nochmal dein Skript mit minimalen Anpassungen damit es ein klein wenig besser lesbar ist:

    Code aus #41
    AutoIt
    #include-once
    #include "wd_core.au3"
    #include "wd_helper.au3"
    
    ;~ $_WD_DEBUG = ""  ; ==> Dos Fehlerconsole aus
    $_WD_DEBUG_INFO     ; ==> Dos Fehlerconsole an
    
    Local $sDesiredCapabilities, $sSession
    
    SetupGecko()
    _WD_Startup()
    
    Local $sSession = _WD_CreateSession($sDesiredCapabilities)
    
    _WD_Navigate($sSession, "https://google.de")
    
    MsgBox(0,"","") ; ==> hält Browser an
    
    _WD_DeleteSession($sSession)
    _WD_Shutdown()
    
    Func SetupGecko()
       _WD_Option("Driver", "C:\Users\xx2\Desktop\WebDr Fire\WebDriver Test\WebDriver-0.5.0.1\geckodriver.exe")
       _WD_Option('DriverParams' ,  '--log trace --marionette-port 2828')
       _WD_Option('Port', 4444)
    
        ;~ ==> neues Profil anlegen funktioniert
        ;~ $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"browserName": "firefox", "acceptInsecureCerts":true}}}'
    
        ;~ ==> neues Profil anlegen funktioniert
        ;~ $sDesiredCapabilities  =  '{"desiredCapabilities":{"javascriptEnabled":true,"nativeEvents":true,"acceptInsecureCerts":true}}'
    
        ;~ ==> Benutzerprofil einlesen funktioniert
        $sDesiredCapabilities = '{"capabilities":{"alwaysMatch": {"moz:firefoxOptions": {"args": ["-profile", "' & GetBenutzerFFProfil() & '"],"log": {"level": "trace"}}}}}'
        
        ;~ MsgBox(0, "DesiredCapabilities", $sDesiredCapabilities) ; Kontrolle
    EndFunc
    
    Func GetBenutzerFFProfil()
        Local $sDefault, $sProfilePath = ''
    
        Local $sProfilesPath = StringReplace(@AppDataDir, '\', '/') & "/Mozilla/Firefox/"
        Local $sFilename = $sProfilesPath & "profiles.ini"
        Local $aSections = IniReadSectionNames ($sFilename)
    
        If Not @error Then
            For $i = 1 To $aSections[0]
                $sDefault = IniRead($sFilename, $aSections[$i], 'Default', '0')
    
                If $sDefault = '1' Then
                    $sProfilePath = $sProfilesPath & IniRead($sFilename, $aSections[$i], "Path", "")
                    ExitLoop
                EndIf
            Next
        EndIf
    
        Return $sProfilePath
    EndFunc
    Alles anzeigen

    Falls dein Skript also soweit funktioniert, musst du nur in Zeile 34 aus "-profile" dies "-headless", "-profile" machen.
    M
    ehr sollte nicht nötig sein :) .

    Viele Grüße
    Sven

  • Webdriver Button drücken

    • SOLVE-SMART
    • 20. Januar 2022 um 21:35

    Hi Windi,

    ich bin durch deine Posts und deren Antworten durchgegangen. Mir ist allerdings noch nicht klar ob dein Problem komplett gelöst ist oder ob da noch was kommt?

    Zitat

    Ich würde gern mein komplettes Tread zur Verfügung stellen.

    Vom Anfänger für Anfänger!

    Tipp:

    Mit diesem zusammenfassenden Code snippet (siehe Thread #41), wirst du leider nur den Wenigsten helfen können, da der Kontext fehlt. Vielleicht beschreibst du dein Vorhaben in diesem Post nochmal kurz ;) .

    Allgemein:

    Mit dem durch Danp2 und @mLipok auf GitHub gehosteten Projekt WebDriver bin ich recht gut vertraut (nutze ich für einige meiner eigenen kleinen Projekte). Falls du also weitere Fragen haben solltest, hoffe ich das ich ggf. ein paar Tipps geben kann :) .

    Viele Grüße

    Sven

  • Hallo zusammen, ich bin Sven

    • SOLVE-SMART
    • 20. Januar 2022 um 18:04

    Dann "Danke" und "thank you" @Musashi ;) .

  • Hallo zusammen, ich bin Sven

    • SOLVE-SMART
    • 20. Januar 2022 um 16:00

    Hi Leute,

    ich bin Sven (SOLVE SMART), Software Test Engineer mit Fokus auf Testautomation und seit etlichen Jahren begeisterter AutoIt Nutzer :) .

    Privat bin ich Ehemann, Vater, Freund, Sohn, IT Geek und sehr engagiert.

    Ich freue mich hier im Forum auf einen angenehmen und konstruktiven Austausch.
    Fragen, Kritik, Anmerkungen oder Verbesserungsvorschlägen stehe ich immer gern offen gegenüber, also scheut euch nicht, ich tue es auch nicht :D .

    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™