BGMを停止させるには?


KBC  2003-11-06 15:55:36  No: 109737  IP: [192.*.*.*]

Call mciSendString("open "".\test.mid"" alias bgm1", "", 0, 0)
Call mciSendString("play bgm1 from 0", "", 0, 0)
で再生している音楽を停止させる方法を教えてください。

編集 削除
たかみちえ  URL  2003-11-06 18:50:39  No: 109738  IP: [192.*.*.*]

とりあえず以下サイトを見てください。
http://www.bekkoame.ne.jp/i/mr.manri/MCI/

編集 削除
KBC  2003-11-12 13:45:18  No: 109739  IP: [192.*.*.*]

停止させることができました。
あと、リピート再生の方法を教えてください。(VB6.0の言語でお願いします)

編集 削除
よねKEN  2003-11-12 15:01:54  No: 109740  IP: [192.*.*.*]

seekで巻戻して、playで再生すればOKです。しかし、演奏の終了タイミングを知るためには、
MCIコマンドのnotifyオプションとMciSendString関数の第四引数を使って
コールバックで受ける必要があってとっても面倒です。
やるなら、下記を参考にして下さい。必要な情報は網羅されていると思います。

「マルチメディア自由自在! 高レベルMCIを使う」 
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/mci/
「Visual Basicの限界を広げるサブクラス化の手法 」
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/subc/

編集 削除
CK  2005-10-24 23:55:22  No: 109741  IP: [192.*.*.*]

Call mciSendString("open "".\test.mid"" alias bgm1", "", 0, 0)
Call mciSendString("play bgm1 from 0", "", 0, 0)
ってどこに記述するんでしょうか?

編集 削除
|」`)  2005-10-25 00:02:34  No: 109742  IP: [192.*.*.*]

|ω・`) このスレは混乱を来たしています。
マルチっぽい香り&釣り氏の予感がします。

編集 削除
我龍院忠太  2005-10-25 08:52:26  No: 109743  IP: [192.*.*.*]

何か勘違いが有って上手くいかないのでしょう。
とりあえずフォームにボタンを一つ置いて
Private Declare Function sndPlaySound _
 Lib "winmm.dll" Alias "sndPlaySoundA" _
 (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1
Private Sub Command1_Click()
    Dim r As Long
    r = sndPlaySound("C:\WINNT\Media\chimes.wav", SND_ASYNC)
End Sub
をやってみましょう。

編集 削除
CK  2005-10-25 11:40:27  No: 109744  IP: [192.*.*.*]

我龍院さんありがとうございます。
実際にはチェックボックスにチェック入っていたら
音鳴らしチェック外されたら音を消すって事をしたいのですが、
何しろ初心者なので書き方がよく分かりません。
↓自分で変更してみたのですが後どこを変更すればよいでしょうか??
Private Sub Check1_change()
    Dim r As Long
    If Checkbox1.Value = False Then
    elself Checkbox1.Value = True Then'←このThenは必要ないんでしょうか?
    r = sndPlaySound("C〜.wav", SND_ASYNC)
End Sub

編集 削除
我龍院忠太  2005-10-25 12:57:53  No: 109745  IP: [192.*.*.*]

CheckBoxのValueはチェック、未チェック、無効  という3つの値を取るので
True、Falseでなく0、1、2の内のいずれかです。
で、Value = 1の時に鳴らせばいいわけですよね。

編集 削除
CK  2005-10-25 16:02:11  No: 109746  IP: [192.*.*.*]

1チェック
2未チェック
0無効って事ですね?

Private Sub Check1_change()
    Dim r As Long
    If Checkbox1.Value = 1 Then
        r = sndPlaySound("〜.wav", SND_ASYNC)
    elself Checkbox1.Value = 2
        r = sndStopSound("〜.wav", SND_ASYNC)'←これでいいのでしょうか?
End Sub

編集 削除
特攻隊長まるるう  2005-10-25 16:14:51  No: 109747  IP: [192.*.*.*]

elself では無くて elseif です。スペルミスですね。

If 文が閉じてません。構文エラーです。ヘルプで if 文の
書き方を確認して下さい。

編集 削除
CK  2005-10-25 16:37:54  No: 109748  IP: [192.*.*.*]

MSDNがないって言われたのでネットでイフ文の書き方調べました。
・VB
If (条件A) Then
'条件Aを満たした時に行なう処理
ElseIf (条件B) Then
'条件Bを満たした時に行なう処理
Else
'その他の時に行なう処理
End If 
Private Sub Check1_change()
    Dim r As Long
    If Checkbox1.Value = 1 Then
        r = sndPlaySound("〜.wav", SND_ASYNC)
    ElseIf Checkbox1.Value = 2 Then
        r = sndStopSound("〜.wav", SND_ASYNC)
    Else
End Sub
どこがおかしいでしょうか??

編集 削除
特攻隊長まるるう  2005-10-25 16:43:08  No: 109749  IP: [192.*.*.*]

End If が抜けてるので If 文が終わってません。

編集 削除
Blue  2005-10-25 16:43:31  No: 109750  IP: [192.*.*.*]

End If はありますか?

というか、エラーメッセージで Ifブロックに対応するEnd Ifが〜
とでませんか?

編集 削除
我龍院忠太  2005-10-25 17:30:28  No: 109751  IP: [192.*.*.*]

>End If が抜けてるので If 文が終わってません。
>End If はありますか?
と言うか、その前にチェックボックスにChangeイベントなんかあったけ。
どんな環境で開発してますか?

編集 削除
特攻隊長まるるう  2005-10-25 17:55:22  No: 109752  IP: [192.*.*.*]

>と言うか、その前にチェックボックスにChangeイベントなんかあったけ。
あ。そこは敢えてユーザ独自のチェックボックスチェック関数という解釈で
突っ込まなかったのにw
オブジェクトのイベントは[コード ウィンドウ]上部の[オブジェクト]ボックス
と[プロシージャ]ボックスを使うべきですね。IntelliSense も最大限
利用した方が良いですよね。スペルミスや思い込みによる単純なミスを
防げますから。
↑すべてヘルプに載ってる単語ですが…MSDN が無い開発って厳しいだろう
なぁ。

編集 削除
ガッ  2005-10-25 18:28:29  No: 109753  IP: [192.*.*.*]

> ↑すべてヘルプに載ってる単語ですが…MSDN が無い開発って厳しいだろう
なぁ。
むかーしVB5の時に経験してみますた…
オブジェクト指向には入力補完とオブジェクトのヘルプがなければいけないことを痛感しました(TT
ネットも繋いでなかったからお手上げ(orz

編集 削除
CK  2005-10-26 01:43:57  No: 109754  IP: [192.*.*.*]

Private Sub Check1_change()
    Dim r As Long
    If Checkbox1.Value = 1 Then
        r = sndPlaySound("〜.wav", SND_ASYNC)
    ElseIf Checkbox1.Value = 2 Then
        r = sndStopSound("〜.wav", SND_ASYNC)
    Else
    End if
End Sub
こうですか?

Check1_change()ってないんですか?
EXCELのVBA上がりの初心者なもんですいません

編集 削除
通ってみた  2005-10-26 08:31:06  No: 109755  IP: [192.*.*.*]

>>    Else
>>    End if

ん?Elseの意味は?

>>Check1_change()ってないんですか?

ん?開発環境ないの?

編集 削除
特攻隊長まるるう  2005-10-26 09:16:50  No: 109756  IP: [192.*.*.*]

>>>    Else
>>>    End if
>ん?Elseの意味は?
'その他の時に行なう処理
…が存在しないなら意味は無いのでしょうね。
省略しても問題ないでしょう。

>Check1_change()ってないんですか?
オブジェクトブラウザで確認すれば、そのオブジェクトに
どんなメソッド・プロパティ・イベントが用意されているか
確認できると思いますが?普段のコーディングでそんな確認
しないんですか???

>EXCELのVBA上がりの初心者なもんですいません
エクセルのVBAでもオブジェクトブラウザはあるし
コードウィンドウの上部に[オブジェクト]ボックスと
[プロシージャ]ボックスもありますし、ヘルプに説明
が載ってます。…まぁ、エクセルVBAのヘルプの
いるかちゃんはおバカな子なので、必要な情報に辿り着く
のに苦労する事はあるかもしれませんが、コーディング
を支援してくれる基本的な機能は早めに理解しておき
ましょう。

編集 削除
通ってみた  2005-10-26 09:17:46  No: 109757  IP: [192.*.*.*]

ヒント:チェックボックスが変化する時の動作

チェックボックスをクリックするよね

編集 削除
CK  2005-10-26 13:36:47  No: 109758  IP: [192.*.*.*]

Private Sub Check1_Click()'←クリックに
    Dim r As Long
    If Checkbox1.Value = 1 Then
        r = sndPlaySound("〜.wav", SND_ASYNC)
    ElseIf Checkbox1.Value = 2 Then
        r = sndStopSound("〜.wav", SND_ASYNC)
    End if'ELSE省略
End Sub

ほかに何か問題あるでしょうか?

編集 削除
CK  2005-10-26 14:13:40  No: 109759  IP: [192.*.*.*]

Private Sub Check1_Click()
Dim r As Long
    If Check1.Value = 1 Then
        r = sndPlaySound("〜.wav", SND_ASYNC)
    ElseIf Check1.Value = 2 Then
        'r = sndStopSound("〜.wav", SND_ASYNC)'←止める方法が分かりません
    End If
End Sub

編集 削除
ななし  2005-10-26 14:21:09  No: 109760  IP: [192.*.*.*]

わかりません、じゃなくってそれに対して何を調べたのさ?

編集 削除
通ってみた  2005-10-26 14:31:18  No: 109761  IP: [192.*.*.*]

r = sndPlaySound("", SND_ASYNC)

で止まらなかったっけ?

とりあえず「sndplaysound」で検索してみれば、たぶんすぐ答えが出ると思うんだけどどう?やってみる気ない?

編集 削除