mciSendStringで再生できない。


琴牢  2005-10-04 10:31:15  No: 126006

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

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


マグ  2005-10-04 23:59:00  No: 126007

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

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

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


通ってみた  2005-10-05 01:54:42  No: 126008

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

ではどうですか?


通ってみた  2005-10-05 01:55:24  No: 126009

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

か・・・


Blue  2005-10-05 03:18:13  No: 126010

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


Blue  2005-10-05 03:19:39  No: 126011

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

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


ガッ  2005-10-05 03:33:48  No: 126012

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


通ってみた  2005-10-05 03:44:51  No: 126013

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

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


琴牢  2005-10-05 04:01:02  No: 126014

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


琴牢  2005-10-05 04:15:32  No: 126015

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


ガッ  2005-10-05 04:33:04  No: 126016

ノ<デバッグ用に投下

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-05 04:41:51  No: 126017

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


Blue  2005-10-05 09:14:45  No: 126018

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

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

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


Blue  2005-10-05 09:30:07  No: 126019

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

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


K.J.K.  2005-10-05 17:08:18  No: 126020

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


琴牢  2005-10-08 18:29:18  No: 126021

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


通ってみた  2005-10-09 18:16:59  No: 126022

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

やってみた?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加