Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как выключить звук

Delphi , Мультимедиа , Аудио



Автор: http://www.swissdelphicenter.ch

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;

Это пример программирования на Delphi, демонстрирующий, как управлять состоянием мутации основного уровня звука в Windows с помощью системы многомедийных приложений (MM).

Функция GetMasterMute получает информацию о линии микшера и ее контроллерах, включая состояние мутации. Она принимает два параметра: Mixer, который является handle к устройству микшера, и Control, который будет хранить детали контроллера.

Процедура SetMasterMuteValue устанавливает значение контроллера мутации основного уровня звука в зависимости от входного параметра Value. Если Value равен True, то микшер мутит; иначе, он размутит.

В примере кода есть форма (TForm1) с кнопкой и чекбоксом. Когда кнопка кликается, процедура SetMasterMuteValue вызывается с значением чекбокса в качестве аргумента. Если чекбокс отмечен, то основной уровень звука будет мутит; иначе, он будет размутит.

Распределение кода:

uses MMSystem;

function GetMasterMute(Mixer: hMixerObj; var Control: TMixerControl): MMResult;
var
  Line: TMixerLine;
  Controls: TMixerLineControls;
begin
   // ...
end;

procedure SetMasterMuteValue(Mixer: hMixerObj; Value: Boolean);
var
  MasterMute: TMixerControl;
  Details: TMixerControlDetails;
  BoolDetails: TMixerControlDetailsBoolean;
  Code: MMResult;
begin
   // Получить детали контроллера мутации основного уровня звука
  Code := GetMasterMute(0, MasterMute); // Устройство микшера #0

  if Code = MMSYSERR_NOERROR then
  begin
     // Установить значение мутации
    with Details do
    begin
       // ...
      paDetails := @BoolDetails;
    end;
    LongBool(BoolDetails.fValue) := Value;

     // Обновить детали контроллера
    Code := mixerSetControlDetails(0, @Details, MIXER_SETCONTROLDETAILSF_VALUE);
  end else
    raise Exception.CreateFmt('SetMasterMuteValue failure, multimedia system error #%d', [Code]);
end;

Обратите внимание, что этот код использует unit MMSystem и зависит от системы многомедийных приложений Windows для управления устройством микшера. Функция GetMasterMute получает информацию о линии микшера и ее контроллерах, а процедура SetMasterMuteValue устанавливает значение контроллера мутации основного уровня звука.

Чтобы использовать этот код в своем проекте, вам нужно добавить unit MMSystem к вашему списку используемых единиц и создать форму с кнопкой и чекбоксом. Затем вы можете вызвать процедуру SetMasterMuteValue из обработчика события клика кнопки.

В статье описывается пример программирования для управления звуком на компьютере с помощью Delphi, позволяющее выключить звук с помощью функции SetMasterMuteValue.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Аудио ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:55:04/0.0035781860351562/0