Конференция "WinAPI" » как включить/выключить звук в системе? [D7, WinXP]
 
  • Dmitry_177 (04.06.08 16:30) [0]
    как включить/выключить звук в системе?
  • Dmitry_177 (04.06.08 16:55) [1]
    я имею ввиду именно выключить звук, а не сделать громкость на 0... в трее при выключении звука чтобы динамик был перечеркнут..
  • Dmitry_177 (04.06.08 17:15) [2]
    в DRKB есть такой вот способ:

    uses

    MMSystem;



    function GetMasterMute(

    Mixer: hMixerObj;

    var Control: TMixerControl): MMResult;

    // Returns True on success

    var

    Line: TMixerLine;

    Controls: TMixerLineControls;

    begin

    ZeroMemory(@Line, SizeOf(Line));

    Line.cbStruct := SizeOf(Line);

    Line.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;

    Result := mixerGetLineInfo(Mixer, @Line,

      MIXER_GETLINEINFOF_COMPONENTTYPE);

    if Result = MMSYSERR_NOERROR then

    begin

      ZeroMemory(@Controls, SizeOf(Controls));

      Controls.cbStruct := SizeOf(Controls);

      Controls.dwLineID := Line.dwLineID;

      Controls.cControls := 1;

      Controls.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;

      Controls.cbmxctrl := SizeOf(Control);

      Controls.pamxctrl := @Control;

      Result := mixerGetLineControls(Mixer, @Controls,

        MIXER_GETLINECONTROLSF_ONEBYTYPE);

    end;

    end;



    procedure SetMasterMuteValue(

    Mixer: hMixerObj;

    Value: Boolean);

    var

    MasterMute: TMixerControl;

    Details: TMixerControlDetails;

    BoolDetails: TMixerControlDetailsBoolean;

    Code: MMResult;

    begin

    Code := GetMasterMute(0, MasterMute);

    if Code = MMSYSERR_NOERROR then

    begin

      with Details do

      begin

        cbStruct := SizeOf(Details);

        dwControlID := MasterMute.dwControlID;

        cChannels := 1;

        cMultipleItems := 0;

        cbDetails := SizeOf(BoolDetails);

        paDetails := @BoolDetails;

      end;

      LongBool(BoolDetails.fValue) := Value;

      Code := mixerSetControlDetails(0, @Details,

    MIXER_SETCONTROLDETAILSF_VALUE);

    end;

    if Code <> MMSYSERR_NOERROR then

      raise Exception.CreateFmt('SetMasterMuteValue failure, '+

        'multimedia system error #%d', [Code]);

    end;



    // Example:



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    SetMasterMuteValue(0, CheckBox1.Checked); // Mixer device #0 mute on/off

    end;



    и на динамик перечеркивается... но вот в winamp-е как играла музыка так и играет.. хотя если открыть окно настройки громкости, галка "выкл. все" отмечена..
 
Конференция "WinAPI" » как включить/выключить звук в системе? [D7, WinXP]
Есть новые Нет новых   [134432   +20][b:0][p:0.001]