/*
我们提供的服务有:做网站、网站制作、微信公众号开发、网站优化、网站认证、右江ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的右江网站制作公司
注意:在C/C++中,'\\'表示反斜线,如果转换前的串中是单写的,则需要手工编辑后再截取
截取前 : M:\Mp3\(李圣杰)痴心绝对.wma
截取后 : (李圣杰)痴心绝对
Press any key to continue
*/
#include stdio.h
char *trim(char s[],char t[]) {
int pos,i;
for(i = 0;s[i];++i)
if(s[i] == '\\') pos = i;
pos++;
for(i = pos; s[i] != '.'; ++i)
t[i - pos] = s[i];
t[i - pos] = '\0';
return t;
}
int main() {
char s[] = "M:\\Mp3\\(李圣杰)痴心绝对.wma";
char t[80];
printf("截取前 : %s\n截取后 : %s\n",s,trim(s,t));
return 0;
}
假定音乐文件是 D:\\zzz\\zzd.wma
#include stdio.h
#include windows.h
#include mmsystem.h
#pragma comment(lib, "winmm.lib")
void main()
{
PlaySound (TEXT("D:\\zzz\\zzd.wma"), NULL, SND_ASYNC | SND_NODEFAULT);
while (1)
{
printf("program is running... here\n"); // 这里插入代码 运行自己的程序, 或
Sleep(1000);
}
exit(0);
}
======
用 system 调用 wmplayer 命令行 也可以 播放 音乐。
可以使用PlaySound()函数播放wav声音,该函数原型位于windows.h中,
函数原型为:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);
参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。
参数fdwSound是标志的组合,各种可选的标志及意义如下所示。若成功则函数返回TRUE,否则返回FALSE。
播放标志以及含义:
SND_APPLICATION
用应用程序指定的关联来播放声音。
SND_ALIAS
pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
SND_ALIAS_ID
pszSound参数指定了预定义的声音标识符。
SND_ASYNC
用异步方式播放声音,PlaySound函数在开始播放后立即返回。
SND_FILENAME
pszSound参数指定了WAVE文件名。
SND_LOOP
重复播放声音,必须与SND_ASYNC标志一块使用。
SND_MEMORY
播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
SND_NODEFAULT
不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
SND_NOSTOP
PlaySound不打断原来的声音播出并立即返回FALSE。
SND_NOWAIT
如果驱动程序正忙则函数就不播放声音并立即返回。
SND_PURGE
停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
SND_RESOURCE
pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
SND_SYNC
同步播放声音,在播放完后PlaySound函数才返回。
************************************************************
例如我想播放在C:\WINDOWS\Media目录中的 Windows XP 启动.wav 文件
程序如下:
#include windows.h
#include stdlib.h
int main(int argc, char* argv[])
{
PlaySound("C:\\WINDOWS\\Media\\Windows XP 启动.wav", NULL, SND_FILENAME | SND_ASYNC);
system("pause");
return 0;
}
解决办法有二:
一是把件i_save_config.c复制到你的MMCWMA 目录下,并在wma_main.c 中定义:extern void Save_SysConfig(); ,不建议使用这种办法。
二是修正include中的路径,比如:如果IDLE和MMCWMA 位于同一文件目录下,wma_main.c可以使用:#include "./../IDLE/idle_extern.h"
只要有良好的“工程”概念,这些管理都会蟡明释起来的,到时你就会发现,算法,要比这个要复杂得多。
用C打开wma格式的文件,一般要用到第三方函数(或者是类、库)或者使用操作系统提供的API(当然你可以自己研究wma的格式,然后自己写函数去读这类文件然后播放)。