1

プロジェクトで音楽を再生するために使用mciSendString("play path repeat",0,0,0)していますが、同時に複数のサウンドを再生するために特別に使用しています。

問題は、サウンドを実行可能パスに入れたいので、関数を使用してexeパスを取得することです

string ExePath() {
    char buffer[MAX_PATH];
    GetModuleFileName( NULL, buffer, MAX_PATH );
    string::size_type pos = string( buffer ).find_last_of( "\\/" );
    return string( buffer ).substr( 0, pos);
}

しかし、mciSendString()かかるLPCSTRので、次のことを試しました

string music_cmd="play "+ExePath()+"\\war1.mp3 repeat";
mciSendString(music_cmd.c_str(),0,0,0);

プログラムはエラーなしで実行されますが、サウンドは再生されません。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2

次のようなパスを使用する場合、パスにスペースを含めないでくださいC:\music\music 2.mp3。機能しません。機能させるには、スペースを削除するか、次のようにスペースなしで新しいパスを作成します。C:\music\music2.mp3

その他の注意事項: パスは 255 文字未満にする必要があります。相対パスは機能しません (コンパイル時には機能しますが、別のコンピューターでプログラムを実行すると機能しません)。スペースを含めることはできません。そうしないと失敗します。

簡単な回避策があります。パス上のドットとスペースで遊ぶことができます

私のは次のとおりです。

path = Application.StartuPath & `\whateverMusic.mp3`
path = Chr(34) & path & Chr(34)
mciSendString("Open " & path & " alias " & oName, Nothing, 0, 0)
mciSendString("Play " & oName, Nothing, 0, 0)

Public Property Name As String
    Set(value as String)
         oName = value
    End Set
    Get
         Return oName
    End Get
End Property

ここから: https://www.youtube.com/watch?v=UWLTegpOuB0

于 2015-08-15T12:53:20.020 に答える