_SpeakingClock() ;~ _SpeakingClock(1) ;=============================================================================== ; Function Name...: _SpeakingClock ; Description.....: Ansage der aktuellen Zeit in Stunde:Minute (Standard) od. Slang ; Parameter(s)....: $fSlang 0-Aus (Standard), Umgangssprachliche Zeitansage, regional jedoch sehr verschieden ; Requirements....: TextToSpeech muß installiert sein mit einer deutschen Stimme ; Return Value(s).: Erfolg 1 (und Zeitansage) ; Fehler 0 und @error ; Author(s).......: BugFix (bugfix@autoit.de) ;=============================================================================== Func _SpeakingClock($fSlang=0) Local $hour = @HOUR, $min = @MIN, $time, $speak1 = '', $speak2 = ' Minuten' Local $oTalk = ObjCreate('SAPI.SpVoice') If @error Then Return SetError(@error,0,0) If Not $fSlang Then If StringLeft($hour,1) = '0' Then $hour = StringTrimLeft($hour,1) Select Case $min = '00' $speak2 = '' Case StringLeft($min,1) = '0' $min = StringTrimLeft($min,1) If $min = 1 Then $speak1 = 'und Eine' $speak2 = ' Minute' Else $speak1 = 'und ' & $min EndIf Case Else $speak1 = 'und ' & $min EndSelect $time = $hour & ' Uhr ' & $speak1 & $speak2 Else ; Stundenwert verweist auf nächste Stunde, da fast alle Zeitansagen dieses verwenden $hour += 1 If $hour > 12 Then $hour -= 12 Switch $min Case 46 To 59 $min = 60 - $min $speak1 = $min $speak2 = ' vor ' & $hour Case 45 $speak1 = -1 $speak2 = 'Drei Viertel ' & $hour Case 31 To 44 $min = $min -30 $speak1 = $min $speak2 = ' nach Halb ' & $hour Case 30 $speak1 = -1 $speak2 = 'Halb ' & $hour Case 16 To 29 $min = 30 - $min $speak1 = $min $speak2 = ' vor Halb ' & $hour Case 15 $speak1 = -1 $speak2 = 'Viertel ' & $hour Case 1 To 14 $hour -= 1 ; hier wieder Bezug zur tatsächlichen Stunde If $hour = -1 then $hour = 12 $speak1 = $min $speak2 = ' nach ' & $hour Case 0 $hour -= 1 ; hier wieder Bezug zur tatsächlichen Stunde If $hour = -1 Then $hour = 12 $speak1 = -1 $speak2 = $hour & ' Uhr' EndSwitch Switch $speak1 Case -1 $speak1 = '' Case 1 $speak1 = 'Eine Minute' Case Else $speak1 &= ' Minuten' EndSwitch $time = $speak1 & $speak2 EndIf $oTalk.Speak('Die Zeit: ' & $time) Return 1 EndFunc ;==>_SpeakingClock