Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как включить/выключить звук в системе? [D7, WinXP]


Dmitry_177 ©   (2008-06-04 16:30:00) 

как включить/выключить звук в системе?


Dmitry_177   (2008-06-04 17:15:00) [1]

в 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-е как играла музыка так и играет.. хотя если открыть окно настройки громкости, галка "выкл. все" отмечена..


Dmitry_177   (2008-06-04 16:55:00) [2]

я имею ввиду именно выключить звук, а не сделать громкость на 0... в трее при выключении звука чтобы динамик был перечеркнут..


Наверх

Титульная страница Поиск, карта сайта Написать письмо