1. #pragma
2. 
3. #define
4. //Windows头文件
5. #include<Windows.h>
6. #include<mmsystem.h>
7. #include<tchar.h>
8. #include<string>
9. #include<iostream>
10. #pragma comment(lib,"winmm.lib")
11. void playmp3(std::wstring mp3file);
12. void Testplaymp3();
13. void playmp3(std::wstring mp3file)
14. {
15. 	std::wstring wstr = L"open ./Baidu-Tts.mp3 alias mp3";
16. 	/*std::wcout << wstr << std::endl;
17. 	std::wcout << mp3file << std::endl;*/
18. 	wstr.append(mp3file);
19. 	/*std::wcout << wstr << std::endl;*/
20. 	wstr.append(L" alias mp3");
21. 	/*std::wcout << wstr << std::endl;*/
22. 	mciSendString((LPCSTR)wstr.c_str(), nullptr, 0, nullptr);
23. 	mciSendString(_T("play mp3"), nullptr, 0, nullptr);
24. }
25. void Testplaymp3()
26. {
27. 	mciSendString("open ./Baidu-Tts.mp3 alias mp3", nullptr, 0, nullptr);
28. 	mciSendString("play mp3", nullptr, 0, nullptr);
29. 	char cPosition[256];
30. 	long mp3Length = 0;
31. 	mciSendString("Status mp3 length", cPosition, 255, NULL);
32. 	mp3Length = strtol(cPosition, NULL, 10);
33. 	std::cout << "声音时长:"<< mp3Length << "ms" << std::endl;
34. }
35. //参考https://blog.csdn.net/aijia1857/article/details/101134620
36. void testmcicmd()
37. {
38.     //打开MCI设备  
39.     MCI_OPEN_PARMS mciOP;
40.     DWORD opReturn;
41.     MCIDEVICEID wIDDevioce;  //保存设备ID  
42. 
43.     mciOP.lpstrDeviceType = NULL;
44.     mciOP.lpstrElementName = (LPCSTR)"./Baidu-Tts.mp3";  //设置打开的文件的名称  
45.     opReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOP);
46.     if (opReturn == 0)
47.     {
48.         wIDDevioce = mciOP.wDeviceID;//播放设备Id  
49. 
50.        //设置设备信息  
51.         MCI_SET_PARMS mciSet;
52.         mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS; //设置时间单位为毫秒  
53.         mciSendCommand(wIDDevioce, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID)&mciSet);
54. 
55.         //音频播放  
56.         MCI_PLAY_PARMS mciPP;
57.         DWORD opReturn;
58.         opReturn = mciSendCommand(wIDDevioce, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPP);
59. 
60.         MCI_STATUS_PARMS mciSP;
61.         DWORD dwLength = 0;
62.         mciSP.dwItem = MCI_STATUS_LENGTH;
63.         DWORD dwReturn = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM,
64.             (DWORD)(LPVOID)&mciSP);
65.         if (dwReturn == 0)
66.             dwLength = mciSP.dwReturn / 1000;
67.         std::cout << "声音时长:" << dwLength << "s" << std::endl;
68. 
69.         MCI_STATUS_PARMS mciStatus;
70.         mciStatus.dwItem = MCI_STATUS_TIME_FORMAT;
71.         DWORD sta2Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
72.         DWORD music_timestyle = mciStatus.dwReturn; //获得当前的时间格式  
73. 
74.         mciStatus.dwItem = MCI_STATUS_MODE;
75.         DWORD sta3Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
76.         DWORD music_playstyle = mciStatus.dwReturn; //获得当前播放工作模式 播放 526  暂停525   
77.     }
78.     else
79.     {
80.         wIDDevioce = NULL;
81.         LPTSTR lptstr = (LPTSTR)malloc(sizeof(CHAR) * 255);
82.         UINT len = 255;
83.         if (mciGetErrorString(opReturn,lptstr,len) == TRUE)
84.         {
85.             std::cout << lptstr << std::endl;
86.         }
87.         free(lptstr);
88.     }  
89. }
90. 
91. #include<conio.h>
92. #include"mciplayer.h"
93. 
94. int main(int argc, char* argv[])
95. {
96. 	/*Testplaymp3();*/
97. 	testmcicmd();
98. 	_getch();
99. 	return 0;
100. }