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

Beiträge von Prajoss

  • Eine Funktion wird ständig wieder ausgeführt (soll aber nicht sein)

    • Prajoss
    • 19. November 2008 um 11:21

    Hey,

    ich arbeite gerade an einem Script welches ein Textbearbeitungsprogramm öffnet, eine Datei abspeichert im rtf-Format. Danach wird Word gestartet und die Datei öffnet und als .Doc speichert.
    Das meiste davon geht über "Send".
    Soweit so gut, nun habe ich folgendes Problem, dass wenn ich auf den Button klicke welcher die Funktion startet die diesen Ablauf automatisiert, diese zwar durchläuft jedoch dann gleich wieder von vorne anfängt. Hier ein Auszug aus dem Quellcode:

    Das Problemkind ist der Button $umwandeln

    [autoit][/autoit][autoit][/autoit][autoit]

    Func _Konvertierung()

    _ID_auslesen()

    _current_ID_bestimmen()

    $hauptfenster = GUICreate( "Umwandlung Baubüro -> Word", 400, 250, -1, -1, -1,$WS_EX_ACCEPTFILES)

    $profil_waehlen = GUICtrlCreateButton( "Profil auswählen", 50, 10, 120, 30)

    $profil = GUICtrlCreateLabel( "Kein Profil gewählt", 200, 13, 140, 24, BitOR($BS_PUSHLIKE, $SS_CENTER))
    GUICtrlSetFont( $profil, 12, 600)

    $file = GUICtrlCreateInput( "", 10, 80, 330, 30)
    GUICtrlSetFont( $file, 12, 400)
    GUICtrlSetState( $file, $GUI_DROPACCEPTED)

    $open = GUICtrlCreateButton( "", 360, 75, 30, 40, $BS_ICON)
    GUICtrlSetImage( -1, "shell32.dll", 2)

    $umwandeln = GUICtrlCreateButton( "umwandeln", 160, 200, 80, 30)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW, $hauptfenster)

    While 1

    $msg = GUIGetMsg()

    If $msg = $open Then
    $file_open = FileOpenDialog( "Datei auswählen", "C:\", "Baubüro-dokumente (*.bbd;*.bbv)", 1 + 2)
    GUICtrlSetData( $file, $file_open)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop

    If $msg = $umwandeln Then
    MsgBox( 64, "Ertappt", "-.-")
    umwandeln()
    EndIf

    If $msg = $profil_waehlen Then
    GUISetState(@SW_HIDE, $hauptfenster)
    GUISetState(@SW_DISABLE, $hauptfenster)
    Profile()
    GUISetState(@SW_ENABLE, $hauptfenster)
    GUISetState(@SW_SHOW, $hauptfenster)
    EndIf

    WEnd

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; Und die Funktion um die es geht:

    [/autoit][autoit][/autoit][autoit]

    Func umwandeln()

    $file_bbd = GUICtrlRead($file)

    GUISetState( @SW_DISABLE, $hauptfenster)

    Send("{SPACE}")
    Run( RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Konvert Delta\Profile\" & $bb_ID, "BRZ32 Ordner") & "\Prog\Tx\BrzTxMp.exe")
    WinWaitActive( "BRZ Login")
    Send("+{TAB}")
    Send($bb_benutzer)
    Send("{TAB}")
    Send($bb_codewort)
    Send("!o")
    WinWaitActive( "BRZ Bau-Büro")
    Send("!d{DOWN}{ENTER}")
    WinWaitActive("Öffnen")
    Send($file_bbd)
    Send("!f")
    Sleep(500)
    Send("!d{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")
    WinWaitActive("Speichern unter")
    Send("{TAB}r+{TAB}")
    $file_rtf = StringTrimRight( $file_bbd, 4)
    Send($file_rtf)
    Send("!s")
    WinWaitActive( "Dokumentinfos")
    Send("!o")
    WinClose( "BRZ Bau-Büro")
    Sleep(500)
    Send("!n")

    $file_dir = StringTrimRight($file_bbd, StringLen($file_bbd) - StringInStr($file_bbd, "\", 2, -1)) & "Umgewandelt\"
    Sleep(500)
    FileMove($file_bbd, $file_dir, 8)

    Run( "C:\Programme\Microsoft Office\OFFICE11\Winword.exe")

    WinWaitActive( "Microsoft Word")
    Send("^o")
    WinWaitActive( "Öffnen")
    $file_doc = StringTrimRight( $file_bbd, 3) & "doc"
    MsgBox( 64, "Test", $file_doc, 5)
    Send($file_rtf & ".rtf")
    Sleep(1000)
    Send("!f")
    Sleep(1000)
    Send("!du")
    WinWaitActive("Speichern unter")
    Send("{TAB}Word-Dokument{ENTER}+{TAB}")
    Sleep(1000)
    Send($file_doc)
    Send("!p")

    GUISetState( @SW_ENABLE, $hauptfenster)

    EndFunc

    [/autoit]

    Ich habe extra eine MsgBox eingebaut um zu sehen von wo die Schleife anfängt, nur blicke ich nicht durch, warum er die Funktion wieder startet.

    Vielleicht kennt ja jemand das Problem oder sieht den Fehler. Es sieht wohl so aus, als ob das Script denkt, ich hätte den Button immernoch gedrückt..


    Mit freundlichen Grüßen

    Prajoss

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™