ビルド時に音声ファイルを取り込むには

[戻る]
den 2014/01/02(木) 13:53:43
Visual Studio Professional 2013を使用している者です。OSはWin8.1 (64bit)です。

ビルド時に音声ファイルを実行ファイルへ取り込み、プログラム実行中にその音声を再生
させる方法を探しております。

mciSendStringで、プログラム実行中に実行ファイル外の音声ファイルを開き、再生させ
ることはできるのですが、アプリの配布時に、実行ファイルと音声ファイルをセットで出
さなければならない上に、音声ファイルを改ざんされてしまうおそれがあります。

どうすれば、ビルド時に音声ファイルを取り込めるでしょうか。

瀬戸っぷ [E-Mail] 2014/01/02(木) 21:48:46
お約束としてはリソースとして取り込む方法ですかね。
サイズによっては実行ファイルのサイズが半端なくでかくなりますけど。

難点は…mciで再生する場合に手間がかかる。というところでしょうか。

http://www13.plala.or.jp/kymats/study/MULTIMEDIA/mciCommand_play.html
の下の方にある欠点とか。
# 一時ファイルとして書き出せばすむことではありますが。
http://support.microsoft.com/kb/155360/ja
ではメモリ上のWAVEとか再生も可能…っぽいので、リソースからも再生は可能と思われます。
LoadResource()やLockResource()でポインタもとれるでしょう。

リソースへの埋め込み方法も検索すれば出てくるハズです。
RT_RCDATAとかキーワードになりますかねぇ…。

den 2014/01/02(木) 22:58:07
ご返答、ありがとうございます。

いろいろ調べたところ、音声ファイルをプロジェクトのリソースとして読み込み、IDを取
得することができました。

あとは、このIDをどう再生に結びつけるかで悩んでいます。

お示しいただきましたリンク先に記されたmmioInstallIOProcについて調べましたが、理
解できず途方に暮れております。

den 2014/01/03(金) 17:46:48
[[解決]]
毎度です。

試行錯誤した挙句、

PlaySound(MAKEINTRESOURCE(読み込み時に取得したID), AfxGetInstanceHandle(), SND_R
ESOURCE | SND_ASYNC);

にて音を鳴らすことができました。

意外にシンプルでしたので、拍子抜けしました。

お騒がせいたしました。

古いスレッドには追加発言できません。