sprachausgabe über objcreate. <- script soll nicht pausiern.

  • ich lasse mir wie im beispiel aufgeführt, gewisse texte vorlesen. leider pausiert das script immer
    bis das vorlesen beendet wurde. ist es möglich das script weiterlaufen zu lassen ?
    auch die volumen regulierung für samples geht nicht :(
    thx 4 help :)

    [autoit]


    $input = "Hallo Du"
    Local $oSpeech = ObjCreate("SAPI.SpVoice")
    If IsObj($oSpeech) Then $oSpeech.Speak($input)

    [/autoit]
  • 1. Bei mir wird nichts pausiert
    2. Du könntest ne while schleife laufen lassen, die prüft, ob der Text zuende gesprochen wurde

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Spoiler anzeigen
    [autoit]

    $sTemp = RunScript('$input = "Hallo Du, wie gehts?"' & @CRLF & 'Local $oSpeech = ObjCreate("SAPI.SpVoice")' & @CRLF & 'If IsObj($oSpeech) Then $oSpeech.Speak($input)')
    MsgBox(0,"","Hier gehts weiter")

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

    MsgBox(0,"","und nochwas")
    FileDelete($sTemp)

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

    ; #FUNCTION# ======================================================================================
    ; Name ..........: RunScript()
    ; Description ...: Führt AutoIt Code aus.
    ; Syntax ........: RunScript($sAu3Code)
    ; Parameters ....: $sAu3Code - Code, der ausgeführt werden soll.
    ; Author ........: SEuBo
    ; Remarks .......: Der Code wird in eine temporäre Datei gespeichert, und diese im Anschluss gelöscht.

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

    ; !!! MODIFIED VERSION !!!
    ; =================================================================================================
    Func RunScript($sAu3Code) ; Author: SEuBo
    Local $sPath = @TempDir & "\~tempscript", $iCnt
    While FileExists($sPath & $iCnt & ".au3") * Sleep(10)
    $iCnt += 1
    WEnd
    Local $sPath = $sPath & $iCnt & ".au3"
    FileWrite($sPath, $sAu3Code)
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sPath & '"')
    Sleep(100)
    Return $sPath
    EndFunc ;==>RunScript

    [/autoit]
  • klappt das nur, wenn Autoit installiert ist?
    Edit: Anscheinend schon...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Dann mach die Funktion doch einfach so:

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: RunScript()
    ; Description ...: Führt AutoIt Code aus.
    ; Syntax ........: RunScript($sAu3Code)
    ; Parameters ....: $sAu3Code - Code, der ausgeführt werden soll.
    ; Author ........: SEuBo
    ; Remarks .......: Der Code wird in eine temporäre Datei gespeichert, und diese im Anschluss gelöscht.

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

    ; !!! MODIFIED VERSION !!!
    ; =================================================================================================
    Func RunScript($sAu3Code, $AutitExe = @AutoItExe) ; Author: SEuBo
    Local $sPath = @TempDir & "\~tempscript", $iCnt
    While FileExists($sPath & $iCnt & ".au3") * Sleep(10)
    $iCnt += 1
    WEnd
    Local $sPath = $sPath & $iCnt & ".au3"
    FileWrite($sPath, $sAu3Code)
    Run('"' & $AutitExe & '" /AutoIt3ExecuteScript "' & $sPath & '"')
    Sleep(100)
    Return $sPath
    EndFunc ;==>RunScript

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Um das auf einem Rechner ohne AutoIt zu nutzen, musst du die AutoIt3.exe mitgeben.


    Nein muss man nicht.
    Das Klappt überall, auch wenn autoit nicht installiert ist. AutoIt ist ne Interpretersprache, und jedes kompilierte Script hat die AutoItExe mit dabei. Habe gerade nochmals AutoIt deinstalliert, um das zu testen.

    Hier ist übrigens noch das 3er Pack mit den anderen Funktionen. Ob nützlich oder nicht sei euch überlassen :D

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Au3Execute()
    ; Description ...: Führt einen AutoIt Befehl in einer externen Datei aus
    ; Syntax ........: _Au3Execute($sCmd[, $iBlock = 1])
    ; Parameters ....: $sCmd - Funktion die ausgeführt werden soll
    ; $iBlock - [optional] Siehe Return Value (default:1)
    ; Return values .: Success
    ; |$iBlock = 1 - Gibt Ergebnis des Funktionsaufrufes zurück
    ; |$iBlock = 0 - Gibt PID des gestarteten Scriptes zurück
    ; Failure - Gibt einen leeren String zurück
    ; |Setzt @error auf 0xDEAD und @extended auf 0xBEEF
    ; Author ........: SEuBo
    ; Remarks .......: !!! Es darf nur eine Zeile eingetragen werden !!!
    ; =================================================================================================
    Func _Au3Execute($sCmd, $iBlock = 1)
    $sCmd = StringStripCR($sCmd)
    If StringInStr($sCmd,@LF) Then Return SetError(0xDEAD,0xBEEF,"")

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

    Local $sPath = @TempDir & "\~tempscript", $iCnt, $sBuffer, $iPID
    While FileExists($sPath & $iCnt & ".au3") * Sleep(10)
    $iCnt += 1
    WEnd

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

    $sPath = $sPath & $iCnt & ".au3"

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

    FileWrite($sPath, "#NoTrayIcon" & @CRLF & "ConsoleWrite(" & $sCmd & "& @CRLF & @CRLF)")
    $iPID = Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sPath & '"', @ScriptDir, @SW_HIDE, 6)
    If Not $iBlock Then Return $iPID
    Do
    $sBuffer &= StdoutRead($iPID)
    Until StringRight($sBuffer, 4) = @CRLF & @CRLF
    Return StringTrimRight($sBuffer, 4)
    EndFunc ;==>_Au3Execute

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

    ; #FUNCTION# ======================================================================================
    ; Name ..........: RunAu3()
    ; Description ...: Führt ein AutoIt Script aus.
    ; Syntax ........: RunAu3($sPath)
    ; Parameters ....: $sPath - Pfad zum Script.
    ; Author ........: SEuBo
    ; =================================================================================================
    Func RunAu3($sPath) ; Author: SEuBo
    RunWait('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sPath & '"')
    EndFunc ;==>RunAu3

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

    ; #FUNCTION# ======================================================================================
    ; Name ..........: RunScript()
    ; Description ...: Führt AutoIt Code aus.
    ; Syntax ........: RunScript($sAu3Code)
    ; Parameters ....: $sAu3Code - Code, der ausgeführt werden soll.
    ; Author ........: SEuBo
    ; Remarks .......: Der Code wird in eine temporäre Datei gespeichert, und diese im Anschluss gelöscht.
    ; =================================================================================================
    Func RunScript($sAu3Code) ; Author: SEuBo
    Local $sPath = @TempDir & "\~tempscript", $iCnt
    While FileExists($sPath & $iCnt & ".au3") * Sleep(10)
    $iCnt += 1
    WEnd
    Local $sPath = $sPath & $iCnt & ".au3"
    FileWrite($sPath, $sAu3Code)
    RunWait('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sPath & '"')
    Sleep(100)
    While FileExists($sPath) * Sleep(10)
    FileDelete($sPath)
    WEnd
    EndFunc ;==>RunScript

    [/autoit]