Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

Как изменить уровень громкости микрофона - Форум

  • Сторінка 1 з 1
  • 1
Как изменить уровень громкости микрофона
ШайтанДата: Вівторок, 04.01.2011, 18:01 | Сообщение # 1



Шайтан
†HellWoW-Pristton†
Чемпион
Группа: Пользователи
Сообщений: 440

Замечания:

Оффлайн
Code
uses
    MMSystem;

// Setzt die Lautstarke fur das Mikrofon
// Set the volume for the microphone

function SetMicrophoneVolume(bValue: Word): Boolean;
var {0..65535}
    hMix: HMIXER;
    mxlc: MIXERLINECONTROLS;
    mxcd: TMIXERCONTROLDETAILS;
    vol: TMIXERCONTROLDETAILS_UNSIGNED;
    mxc: MIXERCONTROL;
    mxl: TMixerLine;
    intRet: Integer;
    nMixerDevs: Integer;
begin
    // Check if Mixer is available
    // Uberprufen, ob ein Mixer vorhanden
    nMixerDevs := mixerGetNumDevs();
    if (nMixerDevs < 1) then
    begin
      Exit;
    end;

    // open the mixer
    intRet := mixerOpen(@hMix, 0, 0, 0, 0);
    if intRet = MMSYSERR_NOERROR then
    begin
      mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
      mxl.cbStruct := SizeOf(mxl);

      // get line info
      intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);

      if intRet = MMSYSERR_NOERROR then
      begin
        ZeroMemory(@mxlc, SizeOf(mxlc));
        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
          {
           // Microphone Name
              Label1.Caption := mxlc.pamxctrl.szName;

            // Min/Max Volume
            Label2.Caption := IntToStr(mxc.Bounds.dwMinimum) + '->' + IntToStr(mxc.Bounds.dwMaximum);
          }
          ZeroMemory(@mxcd, SizeOf(mxcd));
          mxcd.dwControlID := mxc.dwControlID;
          mxcd.cbStruct := SizeOf(mxcd);
          mxcd.cMultipleItems := 0;
          mxcd.cbDetails := SizeOf(Vol);
          mxcd.paDetails := @vol;
          mxcd.cChannels := 1;

          // vol.dwValue := mxlc.pamxctrl.Bounds.lMinimum; Set min. Volume / Minimum setzen
          // vol.dwValue := mxlc.pamxctrl.Bounds.lMaximum; Set max. Volume / Maximum setzen
          vol.dwValue := bValue;

          intRet := mixerSetControlDetails(hMix, @mxcd,
            MIXER_SETCONTROLDETAILSF_VALUE);
          if intRet <> MMSYSERR_NOERROR then
            ShowMessage('SetControlDetails Error');
        end
        else
          ShowMessage('GetLineInfo Error');
      end;
      intRet := mixerClose(hMix);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    SetMicrophoneVolume(30000);
end;

{********************************************************}

// Enable/disable "Mute Microphone Volume"
// Ton fur Mikrofon ein/ausschalten

function SetMicrophoneVolumeMute(bMute: Boolean): Boolean;
var
    hMix: HMIXER;
    mxlc: MIXERLINECONTROLS;
    mxcd: TMIXERCONTROLDETAILS;
    vol: TMIXERCONTROLDETAILS_UNSIGNED;
    mxc: MIXERCONTROL;
    mxl: TMixerLine;
    intRet: Integer;
    nMixerDevs: Integer;
    mcdMute: MIXERCONTROLDETAILS_BOOLEAN;
begin
    // Check if Mixer is available
    // Uberprufen, ob ein Mixer vorhanden ist
    nMixerDevs := mixerGetNumDevs();
    if (nMixerDevs < 1) then
    begin
      Exit;
    end;

    // open the mixer
    // Mixer offnen
    intRet := mixerOpen(@hMix, 0, 0, 0, 0);
    if intRet = MMSYSERR_NOERROR then
    begin
      mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
      mxl.cbStruct := SizeOf(mxl);

      // mixerline info
      intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);

      if intRet = MMSYSERR_NOERROR then
      begin
        ZeroMemory(@mxlc, SizeOf(mxlc));
        mxlc.cbStruct := SizeOf(mxlc);
        mxlc.dwLineID := mxl.dwLineID;
        mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
        mxlc.cControls := 1;
        mxlc.cbmxctrl := SizeOf(mxc);
        mxlc.pamxctrl := @mxc;

        // Get the mute control
        // Mute control ermitteln
        intRet := mixerGetLineControls(hMix, @mxlc,
          MIXER_GETLINECONTROLSF_ONEBYTYPE);

        if intRet = MMSYSERR_NOERROR then
        begin
          ZeroMemory(@mxcd, SizeOf(mxcd));
          mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS);
          mxcd.dwControlID := mxc.dwControlID;
          mxcd.cChannels := 1;
          mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN);
          mxcd.paDetails := @mcdMute;

          mcdMute.fValue := Ord(bMute);

          // set, unset mute
          // Stumsschalten ein/aus
          intRet := mixerSetControlDetails(hMix, @mxcd,
            MIXER_SETCONTROLDETAILSF_VALUE);
          {
          mixerGetControlDetails(hMix, @mxcd,
                     MIXER_GETCONTROLDETAILSF_VALUE);
          Result := Boolean(mcdMute.fValue);
          }
          Result := intRet = MMSYSERR_NOERROR;

          if intRet <> MMSYSERR_NOERROR then
            ShowMessage('SetControlDetails Error');
        end
        else
          ShowMessage('GetLineInfo Error');
      end;

      intRet := mixerClose(hMix);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    SetMicrophoneVolumeMute(False);
end;

{********************************************************}

// Enable/disable "Mute" for several mixer line sources.

uses
    MMSystem;

type
    TMixerLineSourceType = (lsDigital, lsLine, lsMicrophone, lsCompactDisk,
      lsTelephone,
      lsWaveOut, lsAuxiliary, lsAnalog, lsLast);

function SetMixerLineSourceMute(AMixerLineSourceType: TMixerLineSourceType;
    bMute: Boolean): Boolean;
var
    hMix: HMIXER;
    mxlc: MIXERLINECONTROLS;
    mxcd: TMIXERCONTROLDETAILS;
    vol: TMIXERCONTROLDETAILS_UNSIGNED;
    mxc: MIXERCONTROL;
    mxl: TMixerLine;
    intRet: Integer;
    nMixerDevs: Integer;
    mcdMute: MIXERCONTROLDETAILS_BOOLEAN;
begin
    Result := False;
    // Check if Mixer is available
    // Uberprufen, ob ein Mixer vorhanden ist
    nMixerDevs := mixerGetNumDevs();
    if (nMixerDevs < 1) then
    begin
      Exit;
    end;

    // open the mixer
    // Mixer offnen
    intRet := mixerOpen(@hMix, 0, 0, 0, 0);
    if intRet = MMSYSERR_NOERROR then
    begin
      ZeroMemory(@mxl, SizeOf(mxl));
      case AMixerLineSourceType of
        lsDigital: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_DIGITAL;
        lsLine: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_LINE;
        lsMicrophone: mxl.dwComponentType :=
          MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
        lsCompactDisk: mxl.dwComponentType :=
          MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
        lsTelephone: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE;
        lsWaveOut: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
        lsAuxiliary: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY;
        lsAnalog: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_ANALOG;
        lsLast: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_LAST;
      end;

      // mixerline info
      mxl.cbStruct := SizeOf(mxl);
      intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);

      if intRet = MMSYSERR_NOERROR then
      begin
        ZeroMemory(@mxlc, SizeOf(mxlc));
        mxlc.cbStruct := SizeOf(mxlc);
        mxlc.dwLineID := mxl.dwLineID;
        mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
        mxlc.cControls := 1;
        mxlc.cbmxctrl := SizeOf(mxc);
        mxlc.pamxctrl := @mxc;

        // Get the mute control
        // Mute control ermitteln
        intRet := mixerGetLineControls(hMix, @mxlc,
          MIXER_GETLINECONTROLSF_ONEBYTYPE);

        if intRet = MMSYSERR_NOERROR then
        begin
          ZeroMemory(@mxcd, SizeOf(mxcd));
          mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS);
          mxcd.dwControlID := mxc.dwControlID;
          mxcd.cChannels := 1;
          mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN);
          mxcd.paDetails := @mcdMute;

          mcdMute.fValue := Ord(bMute);

          // set, unset mute
          // Stumsschalten ein/aus
          intRet := mixerSetControlDetails(hMix, @mxcd,
            MIXER_SETCONTROLDETAILSF_VALUE);
          {
          mixerGetControlDetails(hMix, @mxcd, IXER_GETCONTROLDETAILSF_VALUE);
          Result := Boolean(mcdMute.fValue);
          }
          Result := intRet = MMSYSERR_NOERROR;

          if intRet <> MMSYSERR_NOERROR then
            ShowMessage('SetControlDetails Error');
        end
        else
          ShowMessage('GetLineInfo Error');
      end;
      intRet := mixerClose(hMix);
    end;
end;

// Example Call; Beispielaufruf:

procedure TForm1.Button1Click(Sender: TObject);
begin
    // Ton ausschalten
    SetMixerLineSourceMute(lsLine, True);
end;


 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2025 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz