web-dev-qa-db-ja.com

WindowsAPIを使用してC ++でSoundを再生する方法は?

コーディングで音楽ファイルを再生しようとしましたが、失敗しました。 .cppファイルを保存するのと同じフォルダーに音楽ファイルがあります。

誰かが私を助けることができますか?

私のコードは:

#include <iostream>  
#include <windows.h>

int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC);    
}
11
user189748

絶対パスを使用し、ファイル名を送信していることを確認し(SND_FILENAMEフラグを使用)、サウンドファイルを再生するのに十分な時間プログラムを一時停止する必要があります(たとえば、getchar()を使用)。プロジェクト設定でwinmm.libライブラリをリンクし、ヘッダーに#includewindows.hとmmsystem.hをリンクする必要があります。

#include <windows.h>
#include <mmsystem.h>

int main() {
    PlaySoundA((LPCSTR) "C:\\kenny g.WAV", NULL, SND_FILENAME | SND_ASYNC);
    getchar();
}

API: http://msdn.Microsoft.com/en-us/library/ms712879(VS.85).aspx
それはそれであるはずです。教えてください、ありがとう!

10
Luis B

コンパイラ設定に-lwinmmを追加してみてください。それは私のために働いた。コンパイラオプション領域に入力するだけで機能します。

4
Cool Guy 2131

絶対パスを使用して、パスエラーかどうかを確認できますか?

Ex: PlaySound("C:\\kenny g.WAV", NULL, SND_ASYNC); 
1
aJ.
_int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC); 
}
_

_SND_ASYNC_フラグを使用すると、プログラムをすぐに終了できます(そして終了します)。

最初にPlaySound("kenny g.WAV", NULL, SND_SYNC);を試して、機能するかどうかを確認してください。

1

このコードを試してみてください。また、code :: Blockの場合、リンカー設定でwinmmを使用します。

#include <iostream>  
#include <windows.h>
#include <MMSystem.h>
 int main(){
PlaySound(TEXT("your file path.wav") , NULL , SND_SYNC) ;
    return 0;
}
0
M.habib

まだ解決されていない場合に備えて!前のコメントで述べた2つのヘッダーファイルをインクルードし、プロジェクトを必要なlibにリンクし、サウンドファイルを.exeファイルと同じフォルダーに配置する必要があります(フルパスを使用していない場合)

0
Vigo

パスについて言えば、パスが絶対的でない場合、データファイルはソースファイルの場所ではなく、実行可能ファイルの場所にある必要があります。

そして、ええ、この質問は 質問 9年前です;)

0
Ashalynd

playSound(TEXT( "SystemStart")、NULL、SND_ALIAS);でテストできます。

0
Aldee