2012-12-19 2 views
0

내 프로젝트에서 음악을 재생할 때 mciSendString("play path repeat",0,0,0)을 사용하고 있습니다. 과 같은 시간에 여러 소리를 재생할 때 특별히 사용하고 있습니다.mciSendString ("play path", 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); 
을 시도 걸리는 exe 인 경로를 얻을 수있는 기능을 사용하는 실행 파일 경로에 소리를 넣어 할 것입니다

프로그램은 오류없이 실행되지만 소리는 재생되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

디버거를 사용해 보셨습니까? – DuXeN0N

+0

[이 예제] (http://www.codeproject.com/Articles/17279/Using-mciSendString-to-play-media-files)를 참고하십시오. 또한 mciSendString 대신'mciSendcommand'를 사용해야하고 [Microsoft의 다음 예제]를 사용해야합니다 (http://msdn.microsoft.com/ru-ru/library/windows/desktop/dd743675 (v = vs.85)) .aspx). – Stan

+0

@ DuXeN0N 예. 문자열에 mp3 파일의 정확한 경로가 저장됩니다. –

답변

1

경로에 공백이 없어야합니다. 과 같은 경로를 사용하는 경우 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

관련 문제