Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

読ませている英文を途中で止めたい

タグの編集...

投稿者 未来   (中学生)   投稿日時 2021/6/2 11:13:03
vb.netで英文を読ませています。
長文だと、途中で止めたい時があるのですが止め方がわかりません。
どうすれば途中で止めることができますか?

プログラムを抜き出すとこんな感じです。

Dim sapi, voice
Dim dat0 as string
Dim dat1 as string
dat0 = "Language=411; Gender=feMale"
dat1=” She plays soccer every day and she watches baseball at home.”
sapi = CreateObject("SAPI.SpVoice")
voice = sapi.GetVoices(dat0)(0)
sapi.Voice = voice
sapi.volume = 100
sapi.Speak(dat1)
voice = Nothing
sapi = Nothing


投稿者 魔界の仮面弁士   (社会人)   投稿日時 2021/6/2 11:54:22
> どうすれば途中で止めることができますか?
サンプルを提示する余裕が無いので、概要だけ。


再生の中断と再開は Pause() メソッドと Resume() メソッドです。
読み終わらせたい場合は、.Skip("Sentence", Integer.MaxValue) を試してみてください。

また、Speak メソッドの第二引数に、SpeechVoiceSpeakFlags.SVSFlagsAsync の
ビットフラグを追加して、非同期呼び出しにします。
現在は省略しているので、 SpeechVoiceSpeakFlags.SVSFDefault 相当です。

非同期モードの場合は、 VBScript とかでは WaitUntilDone メソッドで待ち合せますが、
VB の場合には、SpeakCompleteEvent メソッドで得たハンドルを
WaitForSingleObject API に渡して待ち合わせる手法を取ることができます。

非同期モードでイベント通知を用いる場合は下記を参照してみてください。
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms723587%28v=vs.85%29