mcisendstring 放不了音乐,完全没有声音,很简单的代码,但就是没声音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mcisendstring 放不了音乐,完全没有声音,很简单的代码,但就是没声音相关的知识,希望对你有一定的参考价值。

#include <windows.h>
#pragma comment (lib, "winmm.lib")
void main()

mciSendString("play C:\1.mp3", NULL,0,NULL);

首先传递路径字符串时传递了"play C:\1.mp3",单斜杠的话编译时会warning的,这个你没看到?
其次,多媒体播放要在gui程序中进行。控制台程序就别想这么弄了。这是主要问题所在。编写个win32 application的程序吧,肯定行。附上我的代码:
#include <windows.h>
#include "resource.h"
#pragma comment (lib,"winmm.lib")

BOOL CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)

switch(uMsg)

case WM_CLOSE:
DestroyWindow(hwndDlg);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
if(LOWORD(wParam)==IDB_PLAY)

mciSendString("play D:\\娱乐\\歌曲\\music\\爱江山更爱美人.mp3",NULL,NULL,NULL);

break;

return FALSE;


int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)

DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,DialogProc,NULL);
return 0;
参考技术A 字符串里面的斜杠要双写

……哦楼上说了我才发现,调用之后要getchar()一下不然程序就退出了囧

mciSendString为啥有的MP3音乐播放不出来

GetShortPathName(szFile,str,sizeof(str));
//mciSendString函数在处理长文件名、中文文件名、空格等会有些问题,用此函数解决这类问题。
ListBox_InsertString(hwnd1,-1,str);
mciSendString(stop,"",0,NULL);
wsprintf(cmd,"play %s",str);
mciSendString(cmd,"",0,NULL);//播放音乐函数
wsprintf(stop,"close %s",str);
wsprintf(abc,"setaudio %s volume to %d",str,v);
mciSendString(abc,"",0,NULL); 用这段去播放音乐的时候,有的音乐可以播,有的就不行,不是文件名和路径问题,是怎么回事啊,照百度百科那样,第一句就说CStatic 没有定义,还有别人说的Dim 也是没有定义,怎么回事啊,我用的是VC6.0 难道我是用错了函数?做一个小播放器,是用什么函数的啊?

参考技术A 如:
TCHAR szBuffer[256] = 0;
TCHAR Buffer[256] = 0;
wsprintf(szBuffer,L"cg.mp3");
wsprintf(Buffer,L"open %s",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //打开设备
wsprintf(Buffer,L"play %s repeat",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //播放

将上面的改为:
TCHAR szBuffer[256] = 0;
TCHAR Buffer[256] = 0;
wsprintf(szBuffer,L"cg.mp3");
wsprintf(Buffer,L"open \"%s\"",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //打开设备
wsprintf(Buffer,L"play \"%s\" repeat",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //播放
参考技术B mciSendString函数,我在实验N次后,发现文件路径不能有空格,如:路径中的文件有“Program Files”这个文件夹包含了空格。这个路径将被视为无效路径而不予执行其他有关操作,同时在播放之前和退出程序之前插入一条关闭指令:mciSendString "close " & 音乐文件, vbNullString, 0, 0 (注:“音乐文件”为全局变量,音乐文件=文件路径+文件名),绝对有好处!

以上是关于mcisendstring 放不了音乐,完全没有声音,很简单的代码,但就是没声音的主要内容,如果未能解决你的问题,请参考以下文章

mciSendString播放音乐

电脑放不了音频怎么办?

VB mcisendstring让音乐循环播放

c语言如何用mciSendString来实现音乐播放功能

如何用mciSendCommand()/mciSendString() 函数指定声卡播放音乐

VB mciSendString(Api)怎样实现循环播放音乐?