怎样实现音量控制大小?? 急救!!! 怎样实现音量控制大小,downsoundClick , upsoundClick事件在哪里打开?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 downsoundClick , upsoundClick这是什么事件,在下孤陋寡闻,还请楼主介绍一下!声音调节我的实现如下:{*******************************************************************}{ }{ 音量调节模块: }{ 1. 获得音量(左右声道)的值和是否静音; }{ 2. 设置音量(左右声道)的值和是否静音。 }{ }{*******************************************************************}unit VolumeUnit;interfaceuses // BasicUnit SysUtils, MMSystem, Dialogs; Type TDeviceName = (Master, Microphone, WaveOut, Synth); // 获得混音器参数 procedure GetVolume(DN: TDeviceName); // 设置混音器参数 procedure SetVolume(DN: TDeviceName);implementationvar MuteVol : Boolean; // 静音 LeftVol : Integer; // 左声道 RightVol: Integer; // 右声道{--- 获取声音的所有参数 ------------------------------------------------}procedure GetVolume(DN: TDeviceName);var intRet : Integer; hMix : HMIXER; mxl : TMixerLine; mxc : MIXERCONTROL; mxlc : MIXERLINECONTROLS; mxcd : TMIXERCONTROLDETAILS; details : array [0..30] of Integer; mcdMute : MIXERCONTROLDETAILS_BOOLEAN; nMixerDevs: Integer;begin // 检查混音器是否可用 nMixerDevs := mixerGetNumDevs(); if (nMixerDevs < 1) then begin Exit; end; // 打开混音器 intRet := mixerOpen(@hMix, 0, 0, 0, 0); // 获得左右声道的值 if intRet = MMSYSERR_NOERROR then begin case DN of Master : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; Microphone : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; WaveOut : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; Synth : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; end; mxl.cbStruct := SizeOf(mxl); // 获得控制器的信息 intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); if intRet = MMSYSERR_NOERROR then begin FillChar(mxlc, SizeOf(mxlc),0); mxlc.cbStruct := SizeOf(mxlc); mxlc.dwLineID := mxl.dwLineID; mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME; mxlc.cControls := 1; mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc; intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then begin FillChar(mxcd, SizeOf(mxcd),0); mxcd.dwControlID := mxc.dwControlID; mxcd.cbStruct := SizeOf(mxcd); mxcd.cMultipleItems := 0; mxcd.cbDetails := SizeOf(Integer); mxcd.paDetails := @details; mxcd.cChannels := 2; intRet := mixerGetControlDetails(hMix, @mxcd,MIXER_SETCONTROLDETAILSF_VALUE); LeftVol := details[0]; RightVol := details[1]; if intRet <> MMSYSERR_NOERROR then ShowMessage('设置控制器参数错误!'); end else ShowMessage('获得控制器信息错误!'); end; // end 左右声道 // 获得静音值 if intRet = MMSYSERR_NOERROR then begin FillChar(mxlc, SizeOf(mxlc),0); mxlc.cbStruct := SizeOf(mxlc); mxlc.dwLineID := mxl.dwLineID; mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE; mxlc.cControls := 1; mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc; // 获得静音控制器 intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then begin FillChar(mxcd, SizeOf(mxcd),0); mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS); mxcd.dwControlID := mxc.dwControlID; mxcd.cChannels := 1; mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN); mxcd.paDetails := @mcdMute; // 获得静音值 intRet := mixerGetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); if mcdMute.fValue = 0 then MuteVol := false else MuteVol := True; if intRet <> MMSYSERR_NOERROR then ShowMessage('设置控制器参数错误!'); end else ShowMessage('获得控制器信息错误!'); end; // end 静音 // 关闭混音器 intRet := mixerClose(hMix); end;end;{--- 设置声音的所有参数 ------------------------------------------------}procedure setVolume(DN: TDeviceName);var intRet : Integer; hMix : HMIXER; mxl : TMixerLine; mxc : MIXERCONTROL; mxlc : MIXERLINECONTROLS; mxcd : TMIXERCONTROLDETAILS; details : array [0..30] of Integer; mcdMute : MIXERCONTROLDETAILS_BOOLEAN; nMixerDevs: Integer;begin // 检查混音器是否可用 nMixerDevs := mixerGetNumDevs(); if (nMixerDevs < 1) then begin Exit; end; // 打开混音器 intRet := mixerOpen(@hMix, 0, 0, 0, 0); if intRet = MMSYSERR_NOERROR then begin case DN of Master : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; Microphone : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; WaveOut : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; Synth : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; end; mxl.cbStruct := SizeOf(mxl); // 获得控制器的信息 intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); // 设置左右声道音量 if intRet = MMSYSERR_NOERROR then begin FillChar(mxlc, SizeOf(mxlc),0); mxlc.cbStruct := SizeOf(mxlc); mxlc.dwLineID := mxl.dwLineID; mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME; mxlc.cControls := 1; mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc; intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then begin FillChar(mxcd, SizeOf(mxcd),0); mxcd.dwControlID := mxc.dwControlID; mxcd.cbStruct := SizeOf(mxcd); mxcd.cMultipleItems := 0; mxcd.cbDetails := SizeOf(Integer); mxcd.paDetails := @details; mxcd.cChannels := 2; details[0] := LeftVol; details[1] := RightVol; intRet := mixerSetControlDetails(hMix, @mxcd,MIXER_SETCONTROLDETAILSF_VALUE); if intRet <> MMSYSERR_NOERROR then ShowMessage('设置控制器参数错误!'); end else ShowMessage('获得控制器信息错误!'); end; // end 左右声道 // 设置静音 if intRet = MMSYSERR_NOERROR then begin FillChar(mxlc, SizeOf(mxlc),0); mxlc.cbStruct := SizeOf(mxlc); mxlc.dwLineID := mxl.dwLineID; mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE; mxlc.cControls := 1; mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc; // 获得静音控制器 intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then begin FillChar(mxcd, SizeOf(mxcd),0); mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS); mxcd.dwControlID := mxc.dwControlID; mxcd.cChannels := 1; mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN); mxcd.paDetails := @mcdMute; // 设置静音 mcdMute.fValue := Ord(MuteVol); intRet := mixerSetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); if intRet <> MMSYSERR_NOERROR then ShowMessage('设置控制器参数错误!'); end else ShowMessage('获得控制器信息错误!'); end; // end 静音 // 关闭混音器 intRet := mixerClose(hMix); end;end;end. ExitCode有什么用? 大家帮忙看看我错在哪里了? 怎么使软件自动发邮件啊!???? 有人知道这是什么问题吗?求教中...... 在windowsXP下,配置DCOM出现的问题,请各位大侠解答! 关于ERP系统中的细能力排产的调整算法 为什么这样总是报错 请大家谈谈Delphi7 有什么办法解决转出来文本文件内容最后多几行空行! 请问如何构造如下查询条件的SQL语句? SOS!在线急等!帮忙解决问题的当场解贴给分! 如何把chm格式的帮助文件连接到数据库?
声音调节我的实现如下:{*******************************************************************}
{ }
{ 音量调节模块: }
{ 1. 获得音量(左右声道)的值和是否静音; }
{ 2. 设置音量(左右声道)的值和是否静音。 }
{ }
{*******************************************************************}unit VolumeUnit;interfaceuses
// BasicUnit
SysUtils,
MMSystem,
Dialogs;
Type
TDeviceName = (Master, Microphone, WaveOut, Synth); // 获得混音器参数
procedure GetVolume(DN: TDeviceName);
// 设置混音器参数
procedure SetVolume(DN: TDeviceName);
implementationvar
MuteVol : Boolean; // 静音
LeftVol : Integer; // 左声道
RightVol: Integer; // 右声道
{--- 获取声音的所有参数 ------------------------------------------------}
procedure GetVolume(DN: TDeviceName);
var
intRet : Integer;
hMix : HMIXER;
mxl : TMixerLine;
mxc : MIXERCONTROL;
mxlc : MIXERLINECONTROLS;
mxcd : TMIXERCONTROLDETAILS;
details : array [0..30] of Integer;
mcdMute : MIXERCONTROLDETAILS_BOOLEAN;
nMixerDevs: Integer;
begin // 检查混音器是否可用
nMixerDevs := mixerGetNumDevs();
if (nMixerDevs < 1) then
begin
Exit;
end; // 打开混音器
intRet := mixerOpen(@hMix, 0, 0, 0, 0);
// 获得左右声道的值
if intRet = MMSYSERR_NOERROR then
begin
case DN of
Master : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
Microphone :
mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
WaveOut : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
Synth : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER;
end;
mxl.cbStruct := SizeOf(mxl); // 获得控制器的信息
intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxlc, SizeOf(mxlc),0);
mxlc.cbStruct := SizeOf(mxlc);
mxlc.dwLineID := mxl.dwLineID;
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
mxlc.cControls := 1;
mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc;
intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxcd, SizeOf(mxcd),0);
mxcd.dwControlID := mxc.dwControlID;
mxcd.cbStruct := SizeOf(mxcd);
mxcd.cMultipleItems := 0;
mxcd.cbDetails := SizeOf(Integer);
mxcd.paDetails := @details;
mxcd.cChannels := 2; intRet := mixerGetControlDetails(hMix, @mxcd,MIXER_SETCONTROLDETAILSF_VALUE); LeftVol := details[0];
RightVol := details[1]; if intRet <> MMSYSERR_NOERROR then
ShowMessage('设置控制器参数错误!');
end
else
ShowMessage('获得控制器信息错误!');
end; // end 左右声道
// 获得静音值
if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxlc, SizeOf(mxlc),0);
mxlc.cbStruct := SizeOf(mxlc);
mxlc.dwLineID := mxl.dwLineID;
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls := 1;
mxlc.cbmxctrl := SizeOf(mxc);
mxlc.pamxctrl := @mxc; // 获得静音控制器
intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxcd, SizeOf(mxcd),0);
mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS);
mxcd.dwControlID := mxc.dwControlID;
mxcd.cChannels := 1;
mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN);
mxcd.paDetails := @mcdMute; // 获得静音值
intRet := mixerGetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); if mcdMute.fValue = 0 then
MuteVol := false
else
MuteVol := True; if intRet <> MMSYSERR_NOERROR then
ShowMessage('设置控制器参数错误!');
end
else
ShowMessage('获得控制器信息错误!');
end; // end 静音 // 关闭混音器
intRet := mixerClose(hMix);
end;
end;{--- 设置声音的所有参数 ------------------------------------------------}
procedure setVolume(DN: TDeviceName);
var
intRet : Integer;
hMix : HMIXER;
mxl : TMixerLine;
mxc : MIXERCONTROL;
mxlc : MIXERLINECONTROLS;
mxcd : TMIXERCONTROLDETAILS;
details : array [0..30] of Integer;
mcdMute : MIXERCONTROLDETAILS_BOOLEAN;
nMixerDevs: Integer;
begin // 检查混音器是否可用
nMixerDevs := mixerGetNumDevs();
if (nMixerDevs < 1) then
begin
Exit;
end; // 打开混音器
intRet := mixerOpen(@hMix, 0, 0, 0, 0);
if intRet = MMSYSERR_NOERROR then
begin
case DN of
Master : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
Microphone :
mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
WaveOut : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
Synth : mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER;
end;
mxl.cbStruct := SizeOf(mxl); // 获得控制器的信息
intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);
// 设置左右声道音量
if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxlc, SizeOf(mxlc),0);
mxlc.cbStruct := SizeOf(mxlc);
mxlc.dwLineID := mxl.dwLineID;
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
mxlc.cControls := 1;
mxlc.cbmxctrl := SizeOf(mxc); mxlc.pamxctrl := @mxc;
intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxcd, SizeOf(mxcd),0);
mxcd.dwControlID := mxc.dwControlID;
mxcd.cbStruct := SizeOf(mxcd);
mxcd.cMultipleItems := 0;
mxcd.cbDetails := SizeOf(Integer);
mxcd.paDetails := @details;
mxcd.cChannels := 2; details[0] := LeftVol;
details[1] := RightVol; intRet := mixerSetControlDetails(hMix, @mxcd,MIXER_SETCONTROLDETAILSF_VALUE); if intRet <> MMSYSERR_NOERROR then
ShowMessage('设置控制器参数错误!');
end
else
ShowMessage('获得控制器信息错误!');
end; // end 左右声道
// 设置静音
if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxlc, SizeOf(mxlc),0);
mxlc.cbStruct := SizeOf(mxlc);
mxlc.dwLineID := mxl.dwLineID;
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls := 1;
mxlc.cbmxctrl := SizeOf(mxc);
mxlc.pamxctrl := @mxc; // 获得静音控制器
intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); if intRet = MMSYSERR_NOERROR then
begin
FillChar(mxcd, SizeOf(mxcd),0);
mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS);
mxcd.dwControlID := mxc.dwControlID;
mxcd.cChannels := 1;
mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN);
mxcd.paDetails := @mcdMute; // 设置静音
mcdMute.fValue := Ord(MuteVol);
intRet := mixerSetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); if intRet <> MMSYSERR_NOERROR then
ShowMessage('设置控制器参数错误!');
end
else
ShowMessage('获得控制器信息错误!');
end; // end 静音 // 关闭混音器
intRet := mixerClose(hMix);
end;
end;end.