Hallo, ich habe vor längerer Zeit mal mit AutoIt und Linguatec herumgebastelt.
Hier mein Script von damals:
#include <Date.au3>
#include <GUIConstants.au3>
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
GUICreate("GenerateVoice",500, 200, 1, 1)
$myedit=GUICtrlCreateEdit ("Dieses Script startet den VoiceReader Direct." & @CRLF, 1,1,490,190,)
GUISetState ()
GUICtrlSetData ($myedit, "Zur Ansteuerung des VoiceReader Direct wird SHIFT/ALT und rechte Maustaste gesendet" & @CRLF & @CRLF,1)
GUICtrlSetData ($myedit, "Es kann die Sprachausgabe oder das Erzeugen einer Datei gestartet werden." & @CRLF,1)
GUICtrlSetData ($myedit, "" & @CRLF,1)
GUICtrlSetData ($myedit, "Alle Einstellungen incl. Format und Zielordner werden in VRDirect eingestellt." & @CRLF,1)
GUICtrlSetData ($myedit, "Der Dateiname ohne Ordner wird in diesem Script erzeugt." & @CRLF & @CRLF,1)
GUICtrlSetData ($myedit, "Es werden folgende Parameter benötigt." & @CRLF,1)
GUICtrlSetData ($myedit, "Parameter 1 gibt an ob die Ausgabe als Datei oder auf die Speaker erfolgt." & @CRLF,1)
GUICtrlSetData ($myedit, " Werte = datei oder speak" & @CRLF,1)
GUICtrlSetData ($myedit, "Parameter 2 gibt an ob der 3. Parameter Text ist, oder ob es sich um eine Textdatei handelt" & @CRLF,1)
GUICtrlSetData ($myedit, " Werte = intext oder indatei" & @CRLF,1)
GUICtrlSetData ($myedit, "Parameter 3 der Text, oder der Dateiname als absoluter Pfad (z.B. c:\Voice\vorlesen.text)" & @CRLF,1)
GUICtrlSetData ($myedit, "Parameter 4 gibt an, ob an den Dateinamen Datum Uhrzeit angehängt werden soll." & @CRLF,1)
GUICtrlSetData ($myedit, " datumaus = nicht anhängen, datuman = anhängen" & @CRLF,1)
GUICtrlSetData ($myedit, "Parameter 5 ist der Dateiname unter dem gespeichert werden soll" & @CRLF & @CRLF,1)
GUICtrlSetData ($myedit, "Returncode 1 = Fehler, 0 = OK" & @CRLF,1)
$anzParam = $CmdLine[0]
if $anzParam = 0 Then
msgbox(0,"Hinweis", "Zum beenden OK drücken",)
exit(1)
EndIf
if $anzParam not = 3 or $anzParam not = 5 Then
;falsche Parameter => Abbruch
msgbox(0,"Fehler","Sie haben die Parameter nicht korrekt angegeben!",10)
exit(1)
EndIf
; Datum und Uhrzeit zusammenbauen in der Form: 20060412_122059
$Ordnerdatum = StringMid( _Now(), 7, 4) & StringMid( _Now(), 4, 2) & StringMid( _Now(), 1, 2) & "_" & StringMid( _Now(), 12, 2) & StringMid( _Now(), 15, 2) & StringMid( _Now(), 18, 2)
; Vorlesen
if $anzParam = 3 and $CmdLine[1] = "speak" Then
If $CmdLine[2] = "intext" Then
ClipPut ($CmdLine[3])
ElseIf $CmdLine[2] = "indatei" Then
dateilesen()
Else
msgbox(0,"Fehler","Sie haben den zweiten Parameter nicht korrekt angegeben!",10)
exit(1)
EndIf
;VR starten
VRStart()
;Sprechen
$pos = MouseGetPos()
MouseMove(40, 40, 1)
MouseDown ( "right")
Send("{SHIFTDOWN}")
MouseUP ( "right" )
Send("{SHIFTUP}")
exit(0)
EndIf
;--------------------------------------------------
;Datei erzeugen
if $anzParam = 5 and $CmdLine[1] = "datei" Then
If $CmdLine[2] = "intext" Then
ClipPut ($CmdLine[3])
ElseIf $CmdLine[2] = "indatei" Then
dateilesen()
Else
msgbox(0,"Fehler","Sie haben den zweiten Parameter nicht korrekt angegeben!",10)
exit(1)
EndIf
If $CmdLine[4] = "datuman" Then
;Datum an Dateiname anhängen?
$dateiname=$CmdLine[5] & $Ordnerdatum
ElseIf $CmdLine[4] = "datumaus" Then
$dateiname = $CmdLine[5]
Else
msgbox(0,"Fehler","Sie haben den vierten Parameter nicht korrekt angegeben!",10)
exit(1)
EndIf
;VR starten
VRStart()
;Datei erzeugen
$pos = MouseGetPos()
MouseMove(40, 40, 1)
MouseDown ( "right")
Send("{ALTDOWN}")
MouseUP ( "right" )
Send("{ALTUP}")
WinWait("Speichern unter","")
If Not WinActive("Speichern unter","") Then WinActivate("Speichern unter","")
WinWaitActive("Speichern unter","")
Send($dateiname)
Send("{ENTER}")
MouseMove($pos[0] , $pos[1], 1)
exit(0)
EndIf
;------------------------------------------------------------------------------
Func VRStart()
;VoiceReader Direkt gestartet? Wenn nicht, dann jetzt starten
If ProcessExists("VRDirect.exe") = "0" Then
Run("C:\Programme\linguatec\VoiceReader\VRDirect.exe", "")
ProcessWait("VRDirect.exe")
Sleep(1000)
EndIf
EndFunc
Func dateilesen()
;Datei öffnen und lesen
If FileExists($CmdLine[3]) Then
$file = FileOpen ( $CmdLine[3], 0 )
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.",10)
Exit(1)
Else
$output=""
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$output=$output & $line
Wend
FileClose($file)
ClipPut ($output)
EndIf
EndIf
EndFunc