mciSendStringで再生できない。


琴牢  2005-10-04 01:31:15  No: 126006  IP: [192.*.*.*]

再生したいファイル名にスペースが入ってると再生できません。
対策として""で囲むと良いとのことだったのでやってみましたが
再生されませんでした。

FileName = "C:\Program Files\test.wav"
Call mciSendString("play """ & FileName & """", "", 0, 0)

編集 削除
マグ  2005-10-04 14:59:00  No: 126007  IP: [192.*.*.*]

>再生したいファイル名にスペースが入ってると再生できません。
>対策として""で囲むと良いとのことだったのでやってみましたが

確認はしてはいませんが・・・・・・
FileName = "C:\""Program Files""\test.wav"
こういうことではないでしょうか?

的はずれでしたら、すみません。

編集 削除
通ってみた  2005-10-04 16:54:42  No: 126008  IP: [192.*.*.*]

FileName = ""C:\Program Files\test.wav""
Call mciSendString("play " & FileName, "", 0, 0)

ではどうですか?

編集 削除
通ってみた  2005-10-04 16:55:24  No: 126009  IP: [192.*.*.*]

FileName = """C:\Program Files\test.wav"""

か・・・

編集 削除
Blue  2005-10-04 18:18:13  No: 126010  IP: [192.*.*.*]

Playコマンドの前にOpenしないといけないのでは?
(Playでファイル名指定できたっけかな)

編集 削除
Blue  2005-10-04 18:19:39  No: 126011  IP: [192.*.*.*]

> Playコマンドの前にOpenしないといけないのでは?
> (Playでファイル名指定できたっけかな)
ごめんなさい。全然できました。

参考サイト
http://www.sala.or.jp/~itagaki/vb/103.htm

編集 削除
ガッ  2005-10-04 18:33:48  No: 126012  IP: [192.*.*.*]

>Blueさん
いえ…ちゃんとopenしなきゃいけなかった様に記憶しています…

編集 削除
通ってみた  2005-10-04 18:44:51  No: 126013  IP: [192.*.*.*]

>>再生したいファイル名にスペースが入ってると再生できません。

という事は、ファイル名にスペースがなければ再生できてると思いますが・・・

編集 削除
琴牢  2005-10-04 19:01:02  No: 126014  IP: [192.*.*.*]

通ってみたさんの仰るとおり、ファイル名にスペースが無い場合は再生可能でした。

編集 削除
琴牢  2005-10-04 19:15:32  No: 126015  IP: [192.*.*.*]

>FileName = ""C:\Program Files\test.wav""
>Call mciSendString("play " & FileName, "", 0, 0)
これでも音はなりませんでした。

編集 削除
ガッ  2005-10-04 19:33:04  No: 126016  IP: [192.*.*.*]

ノ<デバッグ用に投下

Function ExecuteMCI(ByVal cmd As String, ByVal subString As String) As String
    
    Dim ret     As Long
    
    ret = mciSendString(cmd & " " & subString, "", 0, 0)
    ExecuteMCI = String$(1024, 0)
    mciGetErrorString ret, ExecuteMCI, 1024
    ExecuteMCI = Left$(ExecuteMCI, InStr(ExecuteMCI, vbNullChar) - 1)
    
End Function

で、
debug.? executemci("play","""" & filename & """")
として、どのような文字列になりましょうや?

※できれば、openしてplayした後のも確かめて欲しいかな…

編集 削除
通ってみた  2005-10-04 19:41:51  No: 126017  IP: [192.*.*.*]

いっそのこと、 sndPlaySoundAPIにするとか

編集 削除
Blue  2005-10-05 00:14:45  No: 126018  IP: [192.*.*.*]

http://hp.vector.co.jp/authors/VA011889/visualbasic/midi.htm
ここのページでは、カレントを強引に変更してやっていますね。
(openですが。)

playのばあいは""で囲ってもダメぽっい気がします。
いろいろ、ぐぐってみたけど、playで""で囲って出来ているサンプルが見つからない。
(すべてopenで出来ているサンプルばかり)

> ※できれば、openしてplayした後のも確かめて欲しいかな…
お願いします。

編集 削除
Blue  2005-10-05 00:30:07  No: 126019  IP: [192.*.*.*]

> playのばあいは""で囲ってもダメぽっい気がします。
って、ちゃんと動いているサンプルがありますた。orz

では、ファイルを別のディレクトリに移してみて、
ディレクトリ名を任意に変更してみて動作を確認してみてはいかかでしょうか?

編集 削除
K.J.K.  2005-10-05 08:08:18  No: 126020  IP: [192.*.*.*]

「回避」するだけであればいろいろな方法が在り得るでしょう。
空白を含むファイル名が拙いということなので、それをAPI関数の
GetShortPathNameで変換して、短い(DOS形式の)ファイル名を用い
てみる、とか、単純にmciSendStringでなくmciSendCommandで操作
してみる、とか、などが思いつきますよね。

編集 削除
琴牢  2005-10-08 09:29:18  No: 126021  IP: [192.*.*.*]

返信送れて申し訳ないです。
>ガッさん
指定されたデバイスが開かれていないか、または MCI で認識されません。
とデバッグで表示されます。

編集 削除
通ってみた  2005-10-09 09:16:59  No: 126022  IP: [192.*.*.*]

>> ※できれば、openしてplayした後のも確かめて欲しいかな…

やってみた?

編集 削除