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)
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
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
; 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,
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
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