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)
-   -   Saber el valor actual del sonido (https://www.clubdelphi.com/foros/showthread.php?t=73114)

ZayDun 01-04-2011 16:00:15

Saber el valor actual del sonido
 
hola, he mirado ya en varios hilos y no logro encontrar como saber el valor del sonido de windows, los codigo que he encontrado o no me han funcionado o me dan como valor "000000" aunque tenga el volumen al 100%.Si conoceis alguna funcion o componente espero que me podais ayudar, un saludo

Utilizo delphi6 y tengo win7.

Casimiro Notevi 01-04-2011 17:39:06

Perdona mi pregunta, pero a qué te refieres con "el valor actual del sonido"?

oscarac 01-04-2011 17:51:13

me imagino que el "valor del sonido" es el % de volumen que tiene el sonido???

o hablas de medicion de decibeles :S:eek:

ZayDun 04-04-2011 03:11:07

perdonar.. me referia al volumen del pc en %, gracias de nuevo.

escafandra 04-04-2011 10:02:55

Código Delphi [-]
uses MMSystem;

function GetMasterVolume(): DWORD;
var
  Line: MIXERLINE;
  Controls: MIXERLINECONTROLS;
  MasterVolume: MIXERCONTROL;
  Details: TMIXERCONTROLDETAILS;
  UnsignedDetails: MIXERCONTROLDETAILS_UNSIGNED;
begin
  ZeroMemory(@Line, sizeof(Line));
  Line.cbStruct:= sizeof(Line);
  Line.dwComponentType:= MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
  if mixerGetLineInfo(0, @Line, MIXER_GETLINEINFOF_COMPONENTTYPE) = MMSYSERR_NOERROR then
  begin
    Controls.cbStruct:= sizeof(Controls);
    Controls.dwLineID:= Line.dwLineID;
    Controls.cControls:= 1;
    Controls.dwControlType:= MIXERCONTROL_CONTROLTYPE_VOLUME;
    Controls.cbmxctrl:= sizeof(MIXERCONTROL);
    Controls.pamxctrl:= @MasterVolume;
    if mixerGetLineControls(0, @Controls, MIXER_GETLINECONTROLSF_ONEBYTYPE) = MMSYSERR_NOERROR then
    begin
      Details.cbStruct:= sizeof(TMIXERCONTROLDETAILS);
      Details.dwControlID:= MasterVolume.dwControlID;
      Details.cChannels:= 1;
      Details.cMultipleItems:= 0;
      Details.cbDetails:= sizeof(MIXERCONTROLDETAILS_UNSIGNED);
      Details.paDetails:= @UnsignedDetails;
      mixerGetControlDetails(0, @Details, MIXER_SETCONTROLDETAILSF_VALUE);
    end;
  end;
  Result:= muldiv(UnsignedDetails.dwValue, 100, $FFFF);
end;

Saludos.

ZayDun 05-04-2011 14:10:16

el codigo no da ningun tipo de error, aunque siempre me da como valor 76, ya he probado a cambiar de canal por si podia ser eso y me da lo mismo, seguire investigando y gracias por la ayuda


La franja horaria es GMT +2. Ahora son las 07:49:17.

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