More ... | MCIで繰り返し再生MCIの notify フラグ指定によって、再生終了時に送られるメッセージ通知を受け取ります。
スクリプト; MCI の notify フラグによる通知を受け取る ; ; MCI による繰り返し再生 #define MM_MCINOTIFY 0x03B9 #define MCI_NOTIFY_SUCCESSFUL 1 dialog "wav;*.mid;*.mp3",16 if stat == 0 : end filename = refstr oncmd gosub *OnMciNotify, MM_MCINOTIFY onexit goto *OnClose mci "open \""+filename+"\" alias mcitest" mes stat ; notify 付きで再生 (再生終了時に MM_MCINOTIFY を受け取る) mci "play mcitest from 0 notify" stop *OnMciNotify if wParam == MCI_NOTIFY_SUCCESSFUL { ; 再生終了時にもう一度再生 mci "play mcitest from 0 notify" } return *OnClose mci "stop mcitest wait" mci "close mcitest" end 解説MCIのいくつかのコマンドは、通知フラグ「notify」を指定することができます。 notify フラグを指定すると、コマンドの処理が終了したときに MM_MCINOTIFY メッセージ (0x03B9) を受け取ります。このとき、コマンドが正常に終了した場合には、wParam が MCI_NOTIFY_SUCCESSFUL (1) になっています。 上のスクリプトでは notify を指定しているのが play コマンドだけなので MCI_NOTIFY_SUCCESSFUL メッセージを受け取るのは再生終了時だけですが、play 以外のコマンドにも notify を指定する場合には、どのコマンドによってメッセージが引き起こされたのかを判断する必要があります。そのあたりはうまく書き換えてください。 |