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

Beiträge von Tikoli

  • Schleifenende via InputBox vorgeben

    • Tikoli
    • 5. Februar 2015 um 08:40

    Manchmal muss man nur laut denken...

    Das hier noch vor den Text:

    Spoiler anzeigen
    Code
    $ANZAHLX = InputBox("Anzahl","Importdurchläufe angeben","[ANZAHL CASPAK-IMPORT]","")
    $FILE = FileOpen(@ScriptDir & "\anzahl.txt",2)
    FileWrite($FILE,$ANZAHLX)
    FileClose($FILE)


    und es funktioniert. Und eben die Input-Variable als max. Schleifenwert angeben.
    Wird dann eben nur eine .txt-Datei erstellt, aber ist egal. Geht :D

    Komplett:

    Spoiler anzeigen
    Code
    #region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=00000407)  ---
    
    
    #region --- Internal functions Au3Recorder Start ---
    Func _Au3RecordSetup()
    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
    If $aResult[1] <> '00000407' Then
      MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(00000407->' & $aResult[1] & ')')
    EndIf
    
    
    EndFunc
    
    
    Func _WinWaitActivate($title,$text,$timeout=0)
        WinWait($title,$text,$timeout)
        If Not WinActive($title,$text) Then WinActivate($title,$text)
        WinWaitActive($title,$text,$timeout)
    EndFunc
    
    
    $ANZAHLX = InputBox("Anzahl","Importdurchläufe angeben","[ANZAHL CASPAK-IMPORT]","")
    $FILE = FileOpen(@ScriptDir & "\anzahl.txt",2)
    FileWrite($FILE,$ANZAHLX)
    FileClose($FILE)
    
    
    _AU3RecordSetup()
    #endregion --- Internal functions Au3Recorder End ---
    
    
        $i=0
        while $i<$ANZAHLX
    
    
          _WinWaitActivate("CASPAKS","")
          MouseClick("left",289,142,1)
          MouseClick("left",289,142,1)
          _WinWaitActivate("Import","")
          MouseClick("left",323,133,1)
    
    
          Sleep(3000)
    
    
        $i=$i+1
        wend
    
    
    #endregion --- Au3Recorder generated code End ---
    Alles anzeigen
  • Schleifenende via InputBox vorgeben

    • Tikoli
    • 5. Februar 2015 um 08:27

    Einen wunderschönen guten Morgen,

    nun stehe ich doch vor einem - für mich - unlösbaren Problem.
    Vor kurzem habe ich ... oder eher die Record-Funktion ... eine Formel entwickelt, die Bombe funktioniert.

    Diese gilt es aber jetzt zu optimieren, in dem Sinne, dass das Programm eine bestimmte Schleife "Anzahl-X" durchläuft.
    "Anzahl-X" möchte ich am liebsten im Vorfeld definieren.

    Wir haben ein Programm, in dem man erstellte Zeichnungen hinterlegen kann. Die Zeichnungen sind sogenannte CASPAKS.
    Jedes CASPAK muss man aber einzeln in das Programm laden, ehe sie erscheint. In unserer Sammlung liegen mittlerweile knapp 3.000 CASPAKS.
    Nur ungerne möchte ich jede einzelne Zeichnung manuell anklicken müssen, also hab ich mir gedacht - mensch, das wird AutoIt können!

    Mein Problem an dieser Stelle: Die verschiedenen Ordner sind unterschiedlich befüllt, gleichauf ich nicht immer alle Projekte einlesen möchte, sondern lediglich "Anzahl-X"; wie es mir eben passt.
    Pro Projekt kann man etwa 20 Sekunden rechnen. Wenn ich in einen Termin gehe oder Mittagspause mache, kann das Programm laufen. Hier würde ich dann gerne sagen:
    "Importiere mir 50 CASPAKS". Beim Programmstart würde ich mir also wünschen, dass mich die Importfunktion fragt "wie viele CASPAKS sollen importiert werden?".
    Nun gebe ich eine Zahl vor, bestätige diese mit OK und das Programm läuft solange durch, bis $i < "Anzahl-X" erreicht ist.

    Geht das überhaupt? Falls ja, wie gehe ich am besten vor?
    Vermutlich muss ich "Anzahl-X" selbst als Variable deklarieren und über eine Input-Funktion diese Variable füllen.
    Muss man dazu immer eine .ini-Datei anlegen, in der dann der Wert (den ich über die Input-Box eingegeben habe) steht? Zumindest habe ich soetwas via Google gefunden.

    Formel ist diese:

    Spoiler anzeigen


    #region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=00000407) ---

    #region --- Internal functions Au3Recorder Start ---
    Func _Au3RecordSetup()
    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
    If $aResult[1] <> '00000407' Then
    MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(00000407->' & $aResult[1] & ')')
    EndIf

    EndFunc

    Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
    EndFunc

    _AU3RecordSetup()
    #endregion --- Internal functions Au3Recorder End ---

    $i=0
    while $i<1

    _WinWaitActivate("CASPAKS","")
    MouseClick("left",289,142,1)
    MouseClick("left",289,142,1)
    _WinWaitActivate("Import","")
    MouseClick("left",323,133,1)

    Sleep(3000)

    $i=$i+1
    wend

    #endregion --- Au3Recorder generated code End ---

    Würde mich über Eure Hilfe sehr freuen !

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™