2017-02-12 4 views
0

ファイルをダブルクリックして、Windowsに口頭で15分ごとに通知します。 (私は、プロセスを殺すまで)VBscriptループ - 15分ごとに時刻を教えてください

私は時間に、毎時間の時間を告げるVBScriptのために、このチュートリアルを見つけた: https://www.nextofwindows.com/windows-trick-how-to-make-your-computer-to-speak-out-time-at-every-hour

を、私は、Windowsのスケジューラは、私の目的のためにして作業することができませんでした(ダブルクリックして15分おきに実行するだけです)、正直なところ、スクリプト自体に15分間隔のループがプログラムされていることが必要です。 (おそらくDo/WhileループとSleep()を使用して?)

もう一つの問題:

Dim speaks, speech 
speaks = “It is ” & hour(time) & minute(time) 
Set speech = CreateObject(“sapi.spvoice”) 
speech.Speak speaks 

しかし、それは発表:

私は、Windowsが同様に分を発表するだろうように、分変数を追加してみましたこのように奇妙な形式の時間。たとえば、現在は午前5時1分です。スクリプトを実行すると、Windowsでは「これは501です」と表示されます。なぜそれは5:01を50プラス1と解釈するのですか?以前、私が4:32でテストしたところ、それは「四百三十二」と言いました。私はちょうど通常の12時間の方法で時間を述べたいと思います。

+0

ダブルクリックで開始し、15分ごとに発言したい場合は、ウィンドウスケジューラを忘れてください。ここでは、VBScriptを定期的に何かする方法の例を示します:http://stackoverflow.com/questions/25009516/vba-excel-conditional-message-box-popup-every-2-minutes-from-now。リンク先のサイトを見ると、実際には「5時」です。音声テキストは「5:00」ではありません。ですから、私はSAPIがそのように時間を認識していないと思います。自分でテキストを生成する必要があります。これは、分と分を分けた場合、5:53ではなく、5と53のようになります。 –

+1

@ Nick.McDermaid VBScriptはVBAと同じではなく、1つの 'Application.OnTime' VBScriptのイベントハンドラ – Lankymart

+0

ああ、そうだよ。私はそれがVBAであることに気付かなかった –

答えて

3

これは5秒です。したがって60 x 15 = 900.

個々の数字として解析するには、数字の間にスペースが必要です。

Set speech = CreateObject("sapi.spvoice") 
Do 
    If Hour(Now) < 12 then 
     Var = Hour(Now) & " AM" 
    else 
     Var = Hour(Now) - 12 & " PM" 
    End If 

    speech.Speak Var & " and " & Minute(Now) & " minutes and " & Second(Now) & " seconds" 
    wscript.sleep 5 
Loop 
関連する問題