求音量静音开关的c代码

qidizi 2007-10-04 04:04:01
求一个程序的代码,
功能,实现系统的音量的开关
启动它一次,检查音量是静音,就打开,即取消,不是静音时,就静音
...全文
296 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qidizi 2007-10-07
  • 打赏
  • 举报
回复
为啥vc编译通过,dev不行呢?包含文件和lib都不少呀.它却说,17 D:\Dev-Cpp\Examples\test\未命名4.cpp [Warning] passing NULL to non-pointer argument 4 of 'MMRESULT waveOutOpen(HWAVEOUT__**, UINT, const WAVEFORMATEX*, DWORD, DWORD, DWORD)' [Linker error] undefined reference to `waveOutOpen@24'
qidizi 2007-10-07
  • 打赏
  • 举报
回复
请麻烦那位高手指点下为什么呢?
qidizi 2007-10-07
  • 打赏
  • 举报
回复
winwin,我用dev++通过不过,出错. waveoutopen那里可以用null? [Linker error] undefined reference to `waveOutOpen@24'
qidizi 2007-10-07
  • 打赏
  • 举报
回复
解决,原来dev用lib和vc不一样,
cceczjxy 2007-10-05
  • 打赏
  • 举报
回复
这个好象没有一定的标准,要看你的声卡驱动提供什么样的接口了.

最简单的

if ((fd = open("/dev/mixer", O_RDWR))>=0)
{
int vol = percent;
vol |= vol << 8;
ioctl(fd, MIXER_WRITE(0), &vol);
close(fd);
}

我的板子上设置声音的部分.
WinWing 2007-10-04
  • 打赏
  • 举报
回复
#include<windows.h>
#include<stdio.h>
#pragma comment(lib,"Winmm.lib")
int main()
{
HWAVEOUT hWave;
WAVEFORMATEX waveFormat;

waveFormat.cbSize = sizeof( WAVEFORMATEX );
waveFormat.wFormatTag = WAVE_FORMAT_PCM;
waveFormat.nChannels = 2;
waveFormat.nSamplesPerSec = 44100L;
waveFormat.nAvgBytesPerSec = 176400L;
waveFormat.nBlockAlign = 4;
waveFormat.wBitsPerSample = 16;

if( waveOutOpen( &hWave , WAVE_MAPPER , &waveFormat ,
NULL , 0 , CALLBACK_WINDOW ) )
{
printf("Open Failed!");
exit(0);
}

DWORD currentVolume;
waveOutGetVolume( hWave , ¤tVolume ); //得到当前的音量

if(currentVolume==0) //如果静音
{
currentVolume = 0xFFFFFFFF; //设为最大值
waveOutSetVolume( hWave , currentVolume );
}
else
{
currentVolume = 0;
waveOutSetVolume( hWave , currentVolume ); //静音
}
return 0;
}
我啃 2007-10-04
  • 打赏
  • 举报
回复
貌似使用C实现比较麻烦
一般都用MFC
关于MFC的可以参考:
http://topic.csdn.net/t/20030717/02/2037646.html

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧