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

Beiträge von bam176

  • Ladebalken mit Funktion laufen lassen

    • bam176
    • 15. April 2019 um 13:04

    Bitnugger vielen dank für den Code, das werde ich mal bei Gelegenheit ausprobieren. Vorerst werde ich es mal ohne Ladebalken lassen.

  • Ladebalken mit Funktion laufen lassen

    • bam176
    • 22. August 2018 um 14:37

    Hallo Zusammen,

    ich habe mir eine kleine Funktion geschrieben, die mir einen lokalen Ordner auf meine NAS kopieren/sichern soll.
    Dazu habe ich mir einen Ladebalken mit in die Funktion geschrieben.
    Aktuell läuft die Copy-Funktion und dann erst der Ladebalken.
    Lässt sich das so gestalten, dass der Ladebalken den tatsächlichen Kopierfortschritt anzeigt?
    Später würde ich damit gerne noch ein paar andere Ordner von meinem Rechner auf meine NAS sichern.
    Dazu würde ich die Funktion mehrmals mit dem jeweiligen Ordnerpfad als Parameter aufrufen.
    Ich habe schon im Forum nach ähnlichen Problemen gesucht aber nichts gefunden, was ich auf meinen Fall hätte anwenden können bzw. verstanden habe.

    AutoIt
    #include <FileConstants.au3>
    #include <Date.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    
    $user = @UserName
    $todays_date = _NowDate ()
    $backup_path = ''
    $documents_path = 'C:\Users\'&$user&'\Documents'
    
    $bprogress_title = "Backup"
    $bprogress_text = "Backup"
    $rprogress_title = "Restore"
    $rprogress_text = "Restore"
    
    ;Aufruf Funktion
    backup ($bprogress_title,$bprogress_text&' Dokumente Ordner',$documents_path,$backup_path&'Documents')
    
    
    ;Backup Funktion
    Func backup($bprogress_title,$bprogress_text,$sourcedir, $destdir)
            ProgressOn ($bprogress_title, $bprogress_text)
            $copy1=DirCopy ( $sourcedir, $destdir, $FC_OVERWRITE)
            For $i = 10 To 100 Step 10
                Sleep(500)
                ProgressSet($i, $i & "%")
            Next
            ProgressOff()
    EndFunc
    Alles anzeigen
  • Problem mit PowerPoint Slideshow beenden

    • bam176
    • 26. Juli 2018 um 15:20

    autoBert
    Vielen Dank für deine Unterstützung. Deine Änderungen haben das Problem gelöst.
    Dass mir mein Else-Zweig gleich mehrere Instanzen öffnet, habe ich nicht heraus bekommen. :Face:Manchmal sieht man den Wald vor lauter Bäumen nicht...:Face:

    Code: von autoBert
    Else
                $Pid = ShellExecute($PPSX_path & $PPSX_name, "", "", "Open", @SW_MAXIMIZE)
                ConsoleWrite($Pid & @CRLF)
                Do
                    $pState = WinGetState("PowerPoint-Bildschirmpräsentation - " & "[" & $PPSX_name & "[Schreibgeschützt]]")
                    Sleep(100) ;===> schont Prozessor Auslastung
                Until $pState

    Könntest du mir noch erklären warum du hier den ConsoleWrite eingebaut hast?

  • Problem mit PowerPoint Slideshow beenden

    • bam176
    • 25. Juli 2018 um 22:48

    Hallo autoBert

    Ich wollte erreichen dass die Master Präsentation nach z.B.10 Minuten wieder in den Vordergrund geholt wird, wenn der Rechner 10 Minuten im Leerlauf ist. (=Keine Eingaben innerhalb der letzten 10 Min gemacht worden sind)

    Das funktioniert auch super.

    Ich kann Die Präsentation nur nicht beenden/verlassen.

    Die Demo.ppsx ist als Anhang im Beitrag bereits eingefügt Dojo1.zip. Das habe ich auch rein geschrieben.


    An dem Rechner hängt ein Touchscreen über den die User sich Infos anschauen, aus der Master Präsentation andere Präsentationen öffnen oder auch mal ins Intranet gehen können. Für das Letzte müssen Sie raus aus der Präsentation und rein in den IE. Das Ist nur ein Beispiel es müssen auch andere Anwendungen zugänglich sein die ich nicht in der Präsentation verlinken kann.

    Ich will mit dem Skript verhindern, dass der nächste User z.B. nur das Intanet sieht und nicht das Info-Board (=Master Präsentation). Das liegt leider in der Natur der Anwender, dass Sie das Zeug einfach stehen lassen wie es ist und das Info Board (Master Präsentation) nicht wieder starten.

    Jeder Anwender soll die gleiche Ausgangsbasis haben wenn er an das Info-Board kommt.

  • Problem mit PowerPoint Slideshows

    • bam176
    • 25. Juli 2018 um 20:39

    Thema wurde in einem anderem Bereich neu erstellt. Bitte löschen, falls ein Moderator vorbei schaut.
    Danke :)

  • Problem mit PowerPoint Slideshow beenden

    • bam176
    • 25. Juli 2018 um 20:34

    Hallo Zusammen,

    ich versuche folgendes Projekt zu realisieren und bin auf ein Problem gestoßen.

    Gegeben:

    Eine PowerPoint Präsentation (*.PPSX) läuft auf einem Touchscreen in Dauerschleife. Die Präsentation (auf´s wesentliche reduziert) ist unten im Anhang "Dojo1.zip", um den Fehler nachstellen zu können.

    Da die User aus der Master-Präsentation auch andere Präsentationen aufrufen und sogar die Master-Präsentation beenden können müssen, soll folgendes umgesetzt werden.

    Aufgabe:

    Das Skript (hängt im Autostart) soll nach einer Leerlaufzeit von X Minuten die Master-Präsentation in den Vordergrund holen.

    Hat ein User die Master-Präsentation beendet, soll das Skript dies erkennen und die Master-Präsentation starten.
    Damit soll sicher gestellt werden, dass immer die Master-Präsentation auf dem Bildschirm läuft.
    Aktuell sind 10 Minuten Leerlaufzeit angedacht.
    =>Diese Vorgaben erfüllt das bestehende Skript ohne Probleme zu machen.

    Umsetzung:

    AutoIt
    #include <Timers.au3>
    
    ;Werte aus der Config.ini
    $PPSX_path = IniRead(@ScriptDir & "\config.ini", "PPSX_path", "PPSX_path1", "")
    $PPSX_name = IniRead(@ScriptDir & "\config.ini", "PPSX_name", "PPSX_name1", "")
    $PPSX_IdleTime = IniRead(@ScriptDir & "\config.ini", "IdleTime", "IdleTime1", "600")
    
    ;Leerlaufzeit
    $time=$PPSX_IdleTime
    
    While 1
    If _Timer_GetIdleTime() >= 1 * $time * 1000 Then
    ;Prüft ob das Fenster der Master-Präsentation aktiv ist (muss nicht unbedingt im Vodergrund sein)
    ;WinGetState = 0 wenn das Fenster nicht gefunden wurde
    $pState = WinGetState ("PowerPoint-Bildschirmpräsentation - "& "[" &$PPSX_name& "[Schreibgeschützt]]")
    ;Wenn das Fenster der Master-Präsenstation noch aktiv ist wird es in den Vordergrung geholt
    if $pState > 0 Then
    WinActivate("PowerPoint-Bildschirmpräsentation - "& "[" &$PPSX_name& "[Schreibgeschützt]]")
    ;Falls das Fenster nicht mehr aktiv ist, wird die PPSX-Datei mit maximiertem Fenster gestartet.
    Else
    ShellExecute($PPSX_path&$PPSX_name,"",Default,Default, @SW_MAXIMIZE)
    
    EndIf
    
    EndIf
    WEnd
    Alles anzeigen
    Code: config.ini
    [PPSX_path]
    PPSX_path1 = [PFAD]
    
    [PPSX_name]
    PPSX_name1 = DATEI.ppsx
    
    [IdleTime]
    IdleTime1 = 600

    Ich prüfe den Fenster-Titel ob dieser vorhanden ist, falls nicht, starte ich die Master-Präsentation.
    Das funktioniert auch gut, weil jede Präsentation einen anderen Titel hat.

    Problem:

    Wenn das Skript die Master-Präsentation einmal gestartet und/oder in den Vordergrund geholt hat, kann diese nicht mehr über ESC beendet werden.
    Beendet man die Master-Präsentation über ESC wird Sie 1 Sekunde später sofort wieder gestartet und läuft erneut los.
    Das Problem tritt auch auf, wenn das AutoIT-Skript vorher komplett beendet worden ist und man dann erst versucht die Präsentation mit ESC zu beenden.

    Es hilft nur, die Master-Präsentation über den TaskManager oder die Taskleiste zu beenden.


    =>TaskManager/Taskleiste ist keine Option, da der User auch über den Touchscreen die Präsentation beenden können muss.
    =>Starte ich die Präsentation ohne das Skript, kann ich Sie ohne Probleme mit ESC beenden.



    Getestet:
    Auf folgenden Systemen habe ich das Skript getestet immer mit dem selben Ergebnis/Problem.
    -Windows 7 Enterprise x64 und Office 2010
    -Windows 10 Enterprise x64 und Office 2016

    An der Master-Präsentation scheint es nicht zu liegen, um das auszuschließen habe ich die Datei mehrfach von Grund auf neu erstellt.

    Ziel:
    Der User soll die Master-Präsentation mit ESC beenden können, da Sie ja eh nach x Minuten Leerlauf von alleine wieder neu startet.
    Das Skript hängt im Autostart und läuft den ganzen Tag mit.


    Zum Testen habe ich in dem Dojo1.zip die Präsentation angehängt.

    Dojo1.zip


    Tipps und Lösungsvorschläge sind willkommen :)

  • Erkennen wann der Button im Installer aktiv ist und dann den Button klicken

    • bam176
    • 13. Oktober 2017 um 10:54

    Hallo Zeitriss,

    vielen Dank für deinen Tipp, mit ControlCommand() und einer While-Schleife hat es geklappt. :part::)

    water: Danke auch für deinen Tipp. Ich habe hier ein anderes Produkt, welches zufällig den gleichen Namen hat wie das, dass du mir raus gesucht hast.

    Anbei meine Lösung.

    Code
    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    Run (@ScriptDir & '\Automation Studio V4.2.exe')
    AutoItSetOption('MouseCoordMode', 0)
    WinWait('Automation Studio V 4.2.4 Installation')
    WinActivate('Automation Studio V 4.2.4 Installation')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    Sleep (1000)
    ControlCommand('Automation Studio V 4.2.4 Installation', '', 'Button4', 'Check')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    WinWait('Automation Studio V 4.2.4 Installation')
    WinActivate('Automation Studio V 4.2.4 Installation')
    While Not ControlCommand('Automation Studio V 4.2.4 Installation', '', 'Button2', 'IsEnabled', '')
        Sleep(2000)
    WEnd
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    Alles anzeigen
  • Erkennen wann der Button im Installer aktiv ist und dann den Button klicken

    • bam176
    • 12. Oktober 2017 um 15:22

    Hallo Zusammen,

    ich habe für eine Software ein Installationsskript geschrieben, welches den Installer durch klickt.

    Als vorletzen Klick klickt man auf "Installieren". Dann läuft der Installer ca. 10 Minuten . Währenddesse ist der "Beenden-Button " ausgegraut.

    Wenn die Installation "fertig" ist wird in der GUI "Fertig" (ID:1006) angezeigt (über dem blauen Ladebalken) und der "Beenden-Button" (Button2) wird wieder auswählbar.
    Ich bräuchte eine Idee wie mein Skript erkennt, dass die Installation fertig ist und dann den "Beenden-Button" klickt.

    Über den Prozess kann ich es leider nicht erkennen und die Exe hat leider auch keine "Silent"-Parameter.

    Ich bin für jede Hilfe dankbar.

    Screenshot.png

    Code
    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    Run (@ScriptDir & '\Automation Studio V4.2.exe')
    AutoItSetOption('MouseCoordMode', 0)
    WinWait('Automation Studio V 4.2.4 Installation')
    WinActivate('Automation Studio V 4.2.4 Installation')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    Sleep (1000)
    ControlCommand('Automation Studio V 4.2.4 Installation', '', 'Button4', 'Check')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    ControlClick('Automation Studio V 4.2.4 Installation', '', 'Button2')
    Alles anzeigen
  • Das Ende der InputBox

    • bam176
    • 21. März 2017 um 16:33

    Vielen Dank euch, es hat geklappt. :klatschen::party1:
    Ich habe das $ES_AUTOHSCROLL falsch interpretiert und deshalb auch nicht ausprobiert.

  • Das Ende der InputBox

    • bam176
    • 21. März 2017 um 15:56

    Hallo Zusammen,

    ich habe ein kleines Skript geschrieben, das mir zwei bestimmte Netzlaufwerke verbinden soll.
    Dazu Frage ich unter anderem den Benutzer und das Passwort ab.
    Natürlich ist es mir sofort auf die Füße gefallen, wo ich einen User mit einem längeren Passwort hatte.
    Was ich bis dahin nicht bemerkt hatte war, dass am Ende von der InputBox nichts mehr eingegeben werden kann.
    Ich habe mir schon einen Wolf gesucht, ?( finde aber nichts, mit dem ich die InputBox dazu bringe z.B. auch 100 Zeichen aufzunehmen.
    Je nach Größe (Bildschirmauflösung) ist beim Passwort-Feld nach 10 oder 13 Zeichen Schluss. Die Lösung von meinem Problem findet glaube ich in Zeile 30 statt.
    Ein Paar Werte habe ich in eine ini-Datei ausgelagert.
    Kann mir jemand helfen?

    AutoIt: Netzlaufwerke verbinden
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <ComboConstants.au3>
    
    
    
    
    $Drive1 = IniRead(@ScriptDir & "\config.ini", "Drives", "Drive1", "0")
    $Drive2 = IniRead(@ScriptDir & "\config.ini", "Drives", "Drive2", "0")
    $Letter1 = IniRead(@ScriptDir & "\config.ini", "Letters", "Letter1", "0")
    $Letter2 = IniRead(@ScriptDir & "\config.ini", "Letters", "Letter2", "0")
    $Info1 = IniRead(@ScriptDir & "\config.ini", "Info", "Info1", "Die Konfig-Datei konnte nicht gefunden werden.")
    $FormTitle = IniRead(@ScriptDir & "\config.ini", "FORM","Title","Netzlaufwerke verbinden")
    $FormWidth = IniRead(@ScriptDir & "\config.ini", "FORM","Width","300")
    $FormHeight= IniRead(@ScriptDir & "\config.ini", "FORM","Height","190")
    $FormLeft= IniRead(@ScriptDir & "\config.ini", "FORM","Left","800")
    $FormTop = IniRead(@ScriptDir & "\config.ini", "FORM","Top","300")
    $Domains = IniRead(@ScriptDir & "\config.ini", "Domain","Domains","0")
    $Form1 = GUICreate($FormTitle, $FormWidth, $FormHeight, $FormLeft, $FormTop)
    $Label1 = GUICtrlCreateLabel("Domain", 30, 43, 100, 20)
    $Label2 = GUICtrlCreateLabel("Username ", 30, 73, 100, 20)
    $Label3 = GUICtrlCreateLabel("Password", 30, 103, 100, 20)
    $Label4 = GUICtrlCreateLabel($Info1, 15, 10, 340, 20)
    $Domain = GUICtrlCreateCombo("", 120, 40, 100, 21, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData($Domain, $Domains)
    
    
    $User = GUICtrlCreateInput("", 120, 70, 100, 21,$ES_LOWERCASE)
    $PW = GUICtrlCreateInput( "", 120, 100, 100, 21, $ES_PASSWORD)
    $Button1 = GUICtrlCreateButton("Verbinden", 30, 145, 100, 21, $BS_DEFPUSHBUTTON)
    $Button2 = GUICtrlCreateButton("Abbrechen", 130, 145, 100, 21, $WS_GROUP)
    GUISetState(@SW_SHOW)
    
    
    While 1
    	$Msg = GUIGetMsg()
    	Switch $Msg
    		Case $GUI_EVENT_CLOSE
    			Exit
    
    
    		Case $Button1
    			$Domain_read = GUICtrlRead($Domain)
    			$User_read = GUICtrlRead($User)
    			$login = ($Domain_read & "\" & $User_read)
    			$pw_read = GUICtrlRead($PW)
    			DriveMapDel($Letter1)
    			DriveMapDel($Letter2)
    			RunWait(DriveMapAdd($Letter1, $Drive1,0,$login,$pw_read))
    			sleep (1000)
    				IF @error > 0 Then
    					MsgBox(0,"","Es ist ein Fehler aufgetreten. Domain, Username oder Password sind nicht korrekt bitte versuchen Sie es erneut.")
    				ElseIf @error = 0 Then
    					RunWait(DriveMapAdd($Letter2, $Drive2,0,$login,$pw_read))
    					sleep (1000)
    					MsgBox(0,"","Die Netzlaufwerke "& $Letter1 &" und " & $Letter2 & " wurden erfolgreich verbunden.")
    					Exit
    				EndIf
    		Case $Button2
    			Exit
    
    
    	EndSwitch
    WEnd
    Alles anzeigen
    Code: config.ini
    [Drives]
    Drive1 = \\Laufwerk1
    Drive2 = \\Laufwerk2
    
    
    [Letters]
    Letter1 = H:
    Letter2 = P:
    
    
    [Info]
    Info1 = Dieses Skript verbindet die Laufwerke H: und P:
    
    
    [FORM]
    Title = Netzlaufwerke verbinden
    Width = 300
    Height = 190
    Left = 800
    Top = 300
    
    
    [Domain]
    Domains = EM|F3A|GUEST|AN
    Alles anzeigen
  • Probleme mit DirRemove

    • bam176
    • 27. Februar 2017 um 09:25

    Hallo BugFix,

    an und für sich ist das schon richtig. Nur löscht "FileDelete" nicht rekursiv. Es soll alles weg hauen. (auch Unterordner)

    alpines: Dank für den Tipp das werde ich mir mal anschauen.

  • Probleme mit DirRemove

    • bam176
    • 24. Februar 2017 um 16:07

    Hallo Zusammen,

    Ich möchte ein Verzeichnis durchsuchen und alles darin löschen, das Verzeichnis aber behalten.
    Dafür habe ich mir folgendes Skript geschrieben. Leider wird der Temp-Ordner nicht geleert. Falls sich jemand fragt, warum so umständlich? Das Skript soll später auch auf Ordner angewendet werden die ich nicht komplett löschen und neu anlegen kann.
    Aktuell habe ich das Problem, dass der DirRemove Befehl nicht zu funktionieren scheint.
    Wenn ich den Rückgabewert von $clean auslese, bekomme ich immer 0 (Fehler, 1=erfolgreich) zurück.

    Kann mir jemand sagen, wo der Fehler liegt?
    Final möchte ich eine Löschfunktion schreiben und diese nur noch mit dem zu leerenden Verzeichnis zusammen aufrufen, falls das geht...

    AutoIt
    ;~ Durchsucht das Verzeichnis und löscht alles darin.
    			Local $search = FileFindFirstFile("C:\temp\*.*")
    		; Prüfen, ob die Suche erfolgreich war
    			If $search = -1 Then
    				MsgBox(0, "Fehler", "Es wurden keine Dateien/Verzeichnisse gefunden.")
    			EndIf
    
    
    		While 1
    			Local $file = FileFindNextFile($search)
    			If @error Then ExitLoop
    			$clean=DirRemove("C:\temp\"&$file,1)
    		WEnd
    ; Handle für Suche schliessen
    		FileClose($search)
    Alles anzeigen

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™