Как использовать mciSendString («путь воспроизведения», 0,0,0) с путем exe?

я использую 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);

Программа работает без ошибок, но не воспроизводит звук.
Как я могу исправить эту проблему?

0

Решение

в пути не должно быть пробелов, если вы используете путь вроде
следующим образом: 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]