关于声音控制的问题!!在线等待

zdzwww 2004-06-23 04:01:15
请问各位那一个API函数可以设置声音为静音状态,或者其他的什么方法!
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei19790920 2004-06-24
  • 打赏
  • 举报
回复
unit WAV_Volume;

interface

uses
Windows, Messages, SysUtils, Variants, Classes;

function GetWaveVolumeLeft: Word;
function GetWaveVolumeRight: Word;
procedure GetWaveVolume(var Left, Right: WORD);
procedure SetWaveVolume(const Left, Right: WORD);
function SupportsLAndRVolume: boolean;

implementation
uses mmsystem;

{$R-}

function _GetWaveVolume: DWORD;
var
Woc : TWAVEOUTCAPS;
Volume : DWORD;
hwo : UINT;
begin
result := 0;

hwo := WAVE_MAPPER;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if (Woc.dwSupport and WAVECAPS_VOLUME) = WAVECAPS_VOLUME then
begin
if WaveOutGetVolume(hwo, @Volume) = MMSYSERR_NOERROR then
Result := Volume;
end;
end;

procedure _SetWaveVolume(const AVolume: DWORD);
var
Woc : TWAVEOUTCAPS;
hwo : UINT;
begin
hwo := WAVE_MAPPER;

if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if (Woc.dwSupport and WAVECAPS_VOLUME) = WAVECAPS_VOLUME then
WaveOutSetVolume(hwo, AVolume);
end;

function GetWaveVolumeLeft: Word;
var
d : DWORD;
begin
d := _GetWaveVolume;
result := LOWORD(d);
end;

function GetWaveVolumeRight: Word;
var
d : DWORD;
begin
d := _GetWaveVolume;
result := HIWORD(d);
end;

procedure GetWaveVolume(var Left, Right: WORD);
var
d : DWORD;
begin
d := _GetWaveVolume;
Left := LOWORD(d);
Right := HIWORD(d);
end;


procedure SetWaveVolume(const Left, Right: WORD);
var
d : DWORD;
begin
d := MAKELONG(Left, Right);
_SetWaveVolume( d );
end;

function SupportsLAndRVolume: boolean;
var
Woc : TWAVEOUTCAPS;
Volume : DWORD;
hwo : UINT;
begin
result := false;

hwo := WAVE_MAPPER;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
result := (Woc.dwSupport and WAVECAPS_LRVOLUME) = WAVECAPS_LRVOLUME;
end;

end.

aiirii 2004-06-24
  • 打赏
  • 举报
回复
我以前做過, 加到 100 分, 我幫你找找代碼,
or
參照
lxpbuaa 的說法, 到上面的網站找找, 我也是從上面改過來的!!
zdzwww 2004-06-24
  • 打赏
  • 举报
回复
感谢lxpbuaa的帮助,waveOutSetVolume函数我用过,它只是把wave的音量设置为最小,并不是把声音设为静音,我意思是能不能实现window桌面任务栏下 的声音控制里的静音功能。
zdzwww 2004-06-24
  • 打赏
  • 举报
回复
感谢大家的帮忙
lxpbuaa 2004-06-23
  • 打赏
  • 举报
回复
更详细的可参看:
http://hubdog.csdn.net/Recommend/rcAudioMixer.htm

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
lxpbuaa 2004-06-23
  • 打赏
  • 举报
回复
uses MMSystem;

waveOutSetVolume(0, 0);

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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