دقیقا همانطوری که کامبیز گفت بدنیال Audio Mixer Reference باید بگردی.
بزرگترین منبع برای اینجور چیزا MSDN هست
http://msdn.microsoft.com/library/de...etlineinfo.asp
اینجا رو هم ببین !
http://www.swissdelphicenter.ch/torr...de.php?id=1204
اینم کدش با یکم تحقیق میتونی کامل ترش کنی ،
Uses MMSystem
function GetControl(Mixer: HMIXER; ComponentType, CtrlType: Longint; var MXC: TMixerControl): Boolean;
var
MXL: TMixerLine;
MXLC: TMixerLineControls;
begin
Result := False;
FillChar(MXL, SizeOf(TMixerLine), 0);
mxl.cbStruct := SizeOf(TMixerLine);
mxl.dwComponentType := ComponentType;
if mixerGetLineInfo(Mixer, @MXL, MIXER_GETLINEINFOF_COMPONENTTYPE) = MMSYSERR_NOERROR then
begin
with MXLC do
begin
cbStruct := SizeOf(TMixerLineControls);
dwLineID := mxl.dwLineID;
dwControlType := CtrlType;
cControls := 1;
cbmxctrl := SizeOf(TMixerLine);
pamxctrl := @MXC;
pamxctrl^.cbStruct := SizeOf(TMixerControl);
end;
Result := mixerGetLineControls(Mixer, @MXLC, MIXER_GETLINECONTROLSF_ONEBYTYPE) = MMSYSERR_NOERROR;
end;
end;
function SetControlVolume(Mixer: HMIXER; MXC: TMixerControl; Volume: Longint): Boolean;
var
MXCD: TMixerControlDetails;
vol: TMixerControlDetails_Unsigned;
begin
FillChar(MXCD, SizeOf(MXCD), 0);
with MXCD do
begin
cbStruct := SizeOf(TMixerControlDetails);
dwControlID := mxc.dwControlID;
cbDetails := SizeOf(TMixerControlDetails_Unsigned);
paDetails := @vol;
cMultipleItems := 0;
cChannels := 1;
end;
vol.dwValue := Volume;
Result := mixerSetControlDetails(Mixer, @MXCD, MIXER_SETCONTROLDETAILSF_VALUE) = MMSYSERR_NOERROR;
end;
//An example how to mute and unmute some control:
function MuteControl(ComponentType: Longint): Boolean;
var
MixerHandle: HMIXER;
VolCtrl: TMixerControl;
MCD: TMixerControlDetails;
Details: array [0..30] of Integer;
begin
mixerOpen(@MixerHandle, 0, 0, 0, 0);
FillChar(VolCtrl, SizeOf(VolCtrl), 0);
if GetControlVolume(MixerHandle, ComponentType,
cbDetails := SizeOf(Integer);
paDetails := @Details;
{by control MIXERCONTROL_CONTROLTYPE_MUTE has Details[0] value 0 - unmuted or 1 - muted
by control MIXERCONTROL_CONTROLTYPE_VOLUME has Details[0] value of left speaker and Details[1]
of right speaker}
end;
mixerGetControlDetails(MixerHandle, @MCD, MIXER_GETCONTROLDETAILSF_VALUE);
SetControlVolume(MixerHandle, VolCtrl, Integer(not Boolean(Details[0])));
end;
mixerClose(MixerHandle);
end;