mciと特殊文字

タグの編集
投稿者 JF1JAPAN  (中学生) 投稿日時 2012/5/7 19:49:50
現在、VisualBasic2010で音声ファイルを再生するプログラムを作っています。
とりあえず再生はできるようになったのですが、一部のファイルを再生しようとすると、
エラー番号263
「指定されたデバイスが開かれていないか、またはMCIで認識できません。」
とエラーが帰ってきました。
ファイルパスはダブルクォーテションでくくっています。
なぜかと思い、良く見てみると、その再生できないファイルにハートの特殊文字が使われてたので、
これのせいかと思いファイル名から除いたところ、再生できるようになりました。
 やはり特殊文字はエラーを起こすのでしょうか。
再生できるのはうれしいですか、なんとかさまざまな名前の音声ファイルを再生したいです。
 なんとか特殊文字が入っていても再生できる方法はありますでしょうか。

もうひとつ質問です。 
 Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0)
このmciコマンドの
「""{0}""」
は何を意味しているのですか?
投稿者 bz9  (中学生) 投稿日時 2012/5/7 20:43:04
> なんとか特殊文字が入っていても再生できる方法はありますでしょうか。
(回答になっていないかもしれませんが)
 別のフォルダなどに 別の名前でコピーしてから再生すればいいと思います
投稿者 shu  (社会人) 投稿日時 2012/5/7 23:59:48
mciSendStringW
はどうですか?
投稿者 JF1JAPAN  (中学生) 投稿日時 2012/5/8 17:06:13
> mciSendStringW
やってみましたが、すべてのファイルから文字化けしたエラーメッセージが帰ってきてしまいました。
投稿者 YuO  (社会人) 投稿日時 2012/5/9 04:18:22
mciSendStringやmciSendStringWの宣言を間違っていませんか。
デフォルトではStringのマーシャリングがAnsiになっているので,マーシャリングをUnicodeにしないといけません。

ちなみにC++で確かめましたが,mciSendStringWはU+2665 (♥) を含むファイル名でもちゃんと受け付けましたよ。
投稿者 JF1JAPAN  (社会人) 投稿日時 2012/5/9 21:18:42
YuOさん
できました!
マーシャリングを変える必要があったんですね
おかげさまで問題のファイルの再生ができました。
また、mciSendStringWの存在を教えてくださったshuさん、ありがとうございました。

最後にもうひとつだけ質問させてください。
さきほどのファイルとは別のmp3ファイルのことなのですが、
普通に再生しようとしてもできなかったので、
名前を「a.mp3」に変更したり、ファイルをC直下に移動しましたが、ダメでした。
GOMプレイヤーでの再生はできたので、ファイルの損傷はないと思われますが、
どのような原因が考えられるでしょうか。
投稿者 bz9  (中学生) 投稿日時 2012/5/10 21:08:40
> GOMプレイヤーでの再生はできたので、ファイルの損傷はないと思われますが、
GOMプレイヤーについて あまり知りませんが

Windows Media Player で再生できますか
できないと もしかしたら コーデックとか・・・