Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Microfono en Windows (https://www.clubdelphi.com/foros/showthread.php?t=94550)

madmai 28-03-2020 12:49:43

Microfono en Windows
 
Alguien sabe, o me puede indicar como activar/desactivar la casilla de la imagen ya sea desde delphi o msdos o cualquier otro sitio? que tenga yo acceso desde mi programa en delphi sin tener que hacerlo desde panel de control, gracias de antemano


Casimiro Notevi 28-03-2020 21:37:42

No sé si este hilo es lo que buscas.

madmai 28-03-2020 22:53:05

Cita:

Empezado por Casimiro Notevi (Mensaje 536528)
No sé si este hilo es lo que buscas.

me guia un poco si, pero tengo que decirle que microphone es?, tengo varios, de momento no lo consigo se agradece la ayuda

Casimiro Notevi 29-03-2020 00:17:10

¿Tienes varios? eso no es normal, ¿por cuál hablas?
Lo normal es tener uno.

madmai 29-03-2020 00:50:53

Cita:

Empezado por Casimiro Notevi (Mensaje 536530)
¿Tienes varios? eso no es normal, ¿por cuál hablas?
Lo normal es tener uno.


Encontre esto
Código:

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
  // überprüfen, ob ein Mixer vorhanden ist
  nMixerDevs := mixerGetNumDevs();
  if (nMixerDevs < 1) then
  begin
    Exit;
  end;

  // open the mixer
  // Mixer ?ffnen
  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;

pero no consigo que me funcione

mi intencion es hacer mute=true en el oncreate
y hacer mute=false en ondestroy

te agradezco tu ayuda, utilizo lazarus por si es muy diferente a delphi mmsystem, utilice mmsystem en el uses y no me ha puesto problema a nivel sintactico pero no me modifica el estado del micro

madmai 29-03-2020 01:18:46

Un momento, se me ha ocurrido una cosa la casilla es escuchar en el pnael de control de windows, luego no hace nada lo que estoy haciendo entiendo, ya que deberia ser listen, no se si me explico, lo que quiero es escuchar por los altavoces lo que sale del micro, si hago mute no estoy haciendo .... digamos lo asi... listen:=true sino que estoy haciendo mute:= true, espero haberme explicado para que lo entiendas por si me puedes ayudar. en cualquier caso te agradezco tu ayuda de nuevo

madmai 29-03-2020 14:36:31

https://wiki.lazarus.freepascal.org/ACS#ACS_3.0


Lo conseguí con esto, muchas gracias por tu ayuda.

ElKurgan 30-03-2020 10:16:45

Gracias por compartir la solución

Un saludo


La franja horaria es GMT +2. Ahora son las 09:25:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi