再生したいファイル名にスペースが入ってると再生できません。
対策として""で囲むと良いとのことだったのでやってみましたが
再生されませんでした。
FileName = "C:\Program Files\test.wav"
Call mciSendString("play """ & FileName & """", "", 0, 0)
>再生したいファイル名にスペースが入ってると再生できません。
>対策として""で囲むと良いとのことだったのでやってみましたが
確認はしてはいませんが・・・・・・
FileName = "C:\""Program Files""\test.wav"
こういうことではないでしょうか?
的はずれでしたら、すみません。
FileName = ""C:\Program Files\test.wav""
Call mciSendString("play " & FileName, "", 0, 0)
ではどうですか?
FileName = """C:\Program Files\test.wav"""
か・・・
Playコマンドの前にOpenしないといけないのでは?
(Playでファイル名指定できたっけかな)
> Playコマンドの前にOpenしないといけないのでは?
> (Playでファイル名指定できたっけかな)
ごめんなさい。全然できました。
参考サイト
http://www.sala.or.jp/~itagaki/vb/103.htm
>Blueさん
いえ…ちゃんとopenしなきゃいけなかった様に記憶しています…
>>再生したいファイル名にスペースが入ってると再生できません。
という事は、ファイル名にスペースがなければ再生できてると思いますが・・・
通ってみたさんの仰るとおり、ファイル名にスペースが無い場合は再生可能でした。
>FileName = ""C:\Program Files\test.wav""
>Call mciSendString("play " & FileName, "", 0, 0)
これでも音はなりませんでした。
ノ<デバッグ用に投下
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した後のも確かめて欲しいかな…
いっそのこと、 sndPlaySoundAPIにするとか
http://hp.vector.co.jp/authors/VA011889/visualbasic/midi.htm
ここのページでは、カレントを強引に変更してやっていますね。
(openですが。)
playのばあいは""で囲ってもダメぽっい気がします。
いろいろ、ぐぐってみたけど、playで""で囲って出来ているサンプルが見つからない。
(すべてopenで出来ているサンプルばかり)
> ※できれば、openしてplayした後のも確かめて欲しいかな…
お願いします。
> playのばあいは""で囲ってもダメぽっい気がします。
って、ちゃんと動いているサンプルがありますた。orz
では、ファイルを別のディレクトリに移してみて、
ディレクトリ名を任意に変更してみて動作を確認してみてはいかかでしょうか?
「回避」するだけであればいろいろな方法が在り得るでしょう。
空白を含むファイル名が拙いということなので、それをAPI関数の
GetShortPathNameで変換して、短い(DOS形式の)ファイル名を用い
てみる、とか、単純にmciSendStringでなくmciSendCommandで操作
してみる、とか、などが思いつきますよね。
返信送れて申し訳ないです。
>ガッさん
指定されたデバイスが開かれていないか、または MCI で認識されません。
とデバッグで表示されます。
>> ※できれば、openしてplayした後のも確かめて欲しいかな…
やってみた?
ツイート | ![]() |