PDA

Ver la Versión Completa : volumen en windows


aram2r
22-01-2004, 18:11:02
Hi people, necesito ayuda y novia, como puedo controlar el volumen de mi pc desde Delphi???? Os agradeceria cualquier informacion gracias.... a si si es por lo segundo dejame tu mail

__cadetill
22-01-2004, 18:23:22
...necesito ayuda y novia
Bueno, creo que eso la necesitamos más de uno :D :D

Referente a la pregunta, quizas este enlace pueda servirte

http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dx81_c/directx_cpp/htm/decodervolumecontrol.asp

aram2r
23-01-2004, 17:19:54
gracias cadetill....pero no habria otra forma un poco mas sencilla de subir y bajar el volumen de la musica en mi pc?????? :confused: esq tienes q reconocer q es un pokiko complicao......ah a ver si me puedes exar una mano con lo q te he puesto en la seccion de internet...y mu wapo tu teeeesssssssssssooorroooooooooo....

__cadetill
23-01-2004, 17:52:12
gracias cadetill....pero no habria otra forma un poco mas sencilla de subir y bajar el volumen de la musica en mi pc??????

Pues no te sabría decir. Delphi no creo que traiga nada en plan "rápido" y lo que encontré buscando por el MSDN fué eso. No se si habrá algún API que te lo permita de forma más rápida :(

y mu wapo tu teeeesssssssssssooorroooooooooo....
Gracias :D :D

albertron
23-01-2004, 19:53:23
Hola Aram2r,

respondo por lo primero :D

Un trozo de código que he encontrado por ahí, espero que te sirva,

uses MMSystem;

type
TVolumeRec = record
case Integer of
0: (LongVolume: Longint) ;
1: (LeftVolume, RightVolume : Word) ;
end;

const DeviceIndex=5
{0:Wave
1:MIDI
2:CDAudio
3:Line-In
4:Microphone
5:Master
6:PC-loudspeaker}

procedure SetVolume(aVolume:Byte) ;
var Vol: TVolumeRec;
begin
Vol.LeftVolume := aVolume shl 8;
Vol.RightVolume:= Vol.LeftVolume;
auxSetVolume(UINT(DeviceIndex), Vol.LongVolume) ;
end;

function GetVolume:Cardinal;
var Vol: TVolumeRec;
begin
AuxGetVolume(UINT(DeviceIndex),@Vol.LongVolume) ;
Result:=(Vol.LeftVolume + Vol.RightVolume) shr 9;
end;

Un saludo.

CHiCoLiTa
28-01-2004, 00:41:26
Yo uso esto para modificar el sonido, la idea es parecida a la respuesta anterior, pero mediante otro metodo

Por cierto, si quieres menos complicacion a la hora de usar estas funciones, sobre todo para las modificaciones, por si usas un TrackBar con esta llamada te evitas todo el rollo.

Es simplemente llamar a control de volumen de windows

WinExec('SNDVOL32.EXE',SW_SHOWNORMAL);


uses MMSystem;

type
TVolumeRec = record
case Integer of
0: (LongVolume: Longint) ;
1: (LeftVolume, RightVolume : Word) ;
end;

{ Funcion para modificar el sonido }
function SetWaveVolume(const AVolume: DWORD): Boolean;
var
WaveOutCaps: TWAVEOUTCAPS;
begin
Result := False;
if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
Result := WaveOutSetVolume(-1, AVolume) = MMSYSERR_NOERROR;
end;

{ Funcion para ver que sonido tiene puesto }
function GetWaveVolume(var LVol: DWORD; var RVol: DWORD): Boolean;
var
WaveOutCaps: TWAVEOUTCAPS;
Volume: DWORD;
begin
Result := False;
if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf
if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
Result := WaveOutGetVolume(-1, @Volume) = MMSYSERR_NOERROR;
//Result := WaveOutGetVolume(WAVE_MAPPER, @Volume) = MMSYSERR_NOERROR;
LVol := LoWord(Volume);
RVol := HiWord(Volume);
end;
end;

aram2r
28-01-2004, 10:50:05
Bueno mi gran dilema solucionado :o , gracias a todos los q me habeis ayudado......bueno ahora vamos a por lo segundo....Quien me ayuda? :cool:

Nuria
28-01-2004, 11:12:20
vamos a por lo segundo....Quien me ayuda?

Pon un anuncio en el periódico, :p , igual tienes suerte .....


Saludos! ;)

metalfox6383
12-05-2006, 06:26:13
Algunas aplicaciones pueden subir y bajar el volúmen para sólo los archivos de sonido de esa reproduce, y no para todas. ¿Cómo se puede hacer eso?

jorgito.crazy
06-06-2006, 20:55:18
Hola Aram2r,

respondo por lo primero :D

Un trozo de código que he encontrado por ahí, espero que te sirva,

uses MMSystem;

type
TVolumeRec = record
case Integer of
0: (LongVolume: Longint) ;
1: (LeftVolume, RightVolume : Word) ;
end;

const DeviceIndex=5
{0:Wave
1:MIDI
2:CDAudio
3:Line-In
4:Microphone
5:Master
6:PC-loudspeaker}

procedure SetVolume(aVolume:Byte) ;
var Vol: TVolumeRec;
begin
Vol.LeftVolume := aVolume shl 8;
Vol.RightVolume:= Vol.LeftVolume;
auxSetVolume(UINT(DeviceIndex), Vol.LongVolume) ;
end;

function GetVolume:Cardinal;
var Vol: TVolumeRec;
begin
AuxGetVolume(UINT(DeviceIndex),@Vol.LongVolume) ;
Result:=(Vol.LeftVolume + Vol.RightVolume) shr 9;
end;

Un saludo.

Esto esta muy bien pero hay que cambiar:
const DeviceIndex=5 a: const DeviceIndex=3
y esto seria para el auxiliar.
Como Pudiera poner El volumen Master y dejar const DeviceIndex=5

SataSoft
16-01-2007, 05:21:59
Amigos ayuda porfa
hice un reproductor de Audio y video, en Delphi 7, que objeto de solapa o ficha utilizo?
q evento activo o donde inserto el codigo q ahan enviado algunos
Gracias.
les dejo mi codigo:
*****************************************
al insertar el codigo q han enviado no me da errores, q onda?:cool:
*****************************************

var
F_mp3: TF_mp3;

implementation

uses Unit2, MMSystem;
type
TVolumeRec = record
case Integer of
0: (LongVolume: Longint) ;
1: (LeftVolume, RightVolume : Word) ;
end;
const DeviceIndex=5
{0:Wave
1:MIDI
2:CDAudio
3:Line-In
4:Microphone
5:Master
6:PC-loudspeaker};

procedure SetVolume(aVolume:Byte) ;
var Vol: TVolumeRec;
begin
Vol.LeftVolume := aVolume shl 8;
Vol.RightVolume:= Vol.LeftVolume;
auxSetVolume(UINT(DeviceIndex), Vol.LongVolume) ;
end;

function GetVolume:Cardinal;
var Vol: TVolumeRec;
begin
AuxGetVolume(UINT(DeviceIndex),@Vol.LongVolume) ;
Result:=(Vol.LeftVolume + Vol.RightVolume) shr 9;
end;
{$R *.dfm}



procedure TF_mp3.ToolButton3Click(Sender: TObject);
begin
Pagecontrol1.ActivePageIndex := 0;
end;

procedure TF_mp3.ToolButton5Click(Sender: TObject);
begin
PageControl1.ActivePageIndex := 1;
end;

procedure TF_mp3.ToolButton1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TF_mp3.BitBtn1Click(Sender: TObject);
begin
if Opendialog1.Execute = true Then
MediaPlayer1.FileName := Opendialog1.FileName;
MediaPlayer1.Open;
MediaPlayer1.DisplayRect :=rect(0,0,OleContainer1.Width,OleContainer1.Height);
MEdiaPlayer1.Play;
StatusBar1.SimpleText := 'Repoduciendo Archivo: ' + OpenDialog1.FileName;
Label3.Visible := True;
Label4.Visible := True;

end;



procedure TF_mp3.Timer1Timer(Sender: TObject);
var
posicion, duracion : LongInt;
begin
if StatusBar1.SimpleText <> 'Inactivo' then
begin
with MediaPlayer1 do
begin
MediaPlayer1.TimeFormat := tfMilliseconds;
duracion := Round(Length div 1000);
scrollBar1.Max := length;
Label3.Caption := Format('%d:%d',[duracion div 60, duracion Mod 60]);
posicion := round(Position div 1000);
Label4.Caption := Format('%d:%d',[posicion div 60, posicion Mod 60]);
ScrollBar1.Position := position; //minuto * 60 + segundo;
end;
end;
end;



procedure TF_mp3.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (HiWord(GetKeyState(VK_MENU)) <> 0) and (Key = 13) then
begin
if F_mp3.WindowState = WsNormal then
begin
Width := F_mp3.Width;
Height:= F_mp3.Height;
Label1.Visible := False;
Label2.Visible := False;
Label3.Visible := False;
Label4.Visible := False;
MediaPlayer1.Visible := False;
BitBtn1.Visible := False;
StatusBar1.Visible := False;
ScrollBar1.Visible := False;
OleContainer1.Visible := False;
F_mp3.BorderStyle := BsNone;
F_mp3.WindowState := WsMaximized;
MediaPlayer1.Display := F_mp3;
MediaPlayer1.DisplayRect := rect(0,0,F_mp3.Clientwidth,F_mp3.ClientHeight);
end
else
begin
F_mp3.WindowState := WsNormal;
F_mp3.Width := Width;
F_mp3.Height := Height;
F_mp3.Position := PoScreenCenter;
Label1.Visible := True;
Label2.Visible := True;
Label3.Visible := True;
Label4.Visible := True;
MediaPlayer1.Visible := True;
BitBtn1.Visible := True;
StatusBar1.Visible := True;
ScrollBar1.Visible := True;
OleContainer1.Visible := True;
F_mp3.BorderStyle := BsSingle;
MediaPlayer1.Display := OleContainer1;
MediaPlayer1.DisplayRect := rect(0,0,F_mp3.Clientwidth,F_mp3.ClientHeight);
end;
end;


end;

procedure TF_mp3.FormPaint(Sender: TObject);

var
i: Integer;

procedure MakeShadow(control: TControl; Width: Integer; Color: TColor);
var
rect: TRect;
old: TColor;
begin

rect := control.boundsrect;
rect.Left := rect.Left + width;
rect.Top := rect.Top + width;
rect.Right := rect.Right + width;
rect.Bottom := rect.Bottom + width;
old := Self.canvas.brush.color;

Self.canvas.brush.Color := color;
Self.canvas.fillrect(rect);
Self.canvas.brush.Color := old;
end;

begin

for i:=0 to Self.ControlCount-1 do
if self.Controls[i].Visible then
MakeShadow(Self.Controls[i],2,clGray);

end;


procedure TF_mp3.BitBtn2Click(Sender: TObject);
begin
Form2.ShowModal;
end;
end.

Ñuño Martínez
17-01-2007, 10:07:06
Amigo mio, creo que deberías leerte esto (http://tinyurl.com/kcd4q), y esto (http://clubdelphi.com/foros/guiaestilo.php) también.

SataSoft
17-01-2007, 15:11:21
viendolo del lado del programnador eres un 0 a la izquierda, solo pedia un poko de ayuda, sobre delphi, no de como escribir un mensaje o como hacer una pregunta.
gracias de todos modos

Delphius
18-01-2007, 06:21:35
SataSoft, Ñuño Martínez te ha respondido en buena manera. Y tu respondes con un tono repochante:
viendolo del lado del programnador eres un 0 a la izquierda

Y si te lo ha dicho, es porque no se ha entendido bien tu inquietud. Se le recomienda a cada miembro nuevo que le dediquen un poco de tiempo para leer las guia de estilo como asi también para formular sus preguntas. No soy moderador, pero debo admitir que es parte de todos los miebros de que se tenga del debido respeto hacia las simples normas de convivencia como hacia las personas que responden.

En lo personal, a mi no me queda claro lo que pretendes con tu mensaje. Tu dices:
Amigos ayuda porfa
hice un reproductor de Audio y video, en Delphi 7, que objeto de solapa o ficha utilizo?
q evento activo o donde inserto el codigo q ahan enviado algunos
Gracias.
les dejo mi codigo:
*****************************************
al insertar el codigo q han enviado no me da errores, q onda?:cool:
*****************************************

Comienzas diciendo que hiciste un reproductor, bueno... eso lo entiendo. Yo también me hice uno. ¡Seguidamente preguntas que tipo de formulario o Solapas haz de usar? Francamente alli es donde no entiendo... y luego preguntas porque cual evento haz de emplear para que tu código funcione?
Según vi el código (de vista rápida) alli estas asignando eventos (evento OnClick) a diferentes botones, a un Timer (evento OnTimer), al OnKeyDown y al OnPaint a un formulario.

Y para finalizar mencionas que el código te ha sido enviado (¿que no era que tu lo habías desarrollado?) Y que no te da errores...

A me da la impresión, siguiendo lo último que leo y en base a lo creo entender, de que haz copiado el código de algún lado y ahora no sabes a que controles asignarles dicho código.

Por favor, no reproches. En lo personal no entiendo lo que pretendes. Si puedes ser más explícito te lo agradecería.

Y si eres una persona que recien te estas iniciando en Delphi, puedes leer La Cara Oculta de Delphi 4 (http://www.marteens.com/caraoculta.htm). Es una buena guía.

Saludos,

Ñuño Martínez
18-01-2007, 12:30:00
Gracias Delphius. Ya empezaba a dudar de mi mismo.

SataSoft
18-01-2007, 16:27:28
OK, Delphius, si hubiese sido asi antes la respuesta... la historia hubiese sido otra, en fin..... ya resolvi mi duda, por lo consiguiente solo un mal enmtendido, pido disculpas a quien las merece.
los vemos ejn otra ocacion o QUEST.
Adios

Delphius
19-01-2007, 09:12:08
ya resolvi mi duda

Me alegro que hayas resuelto tus incovenientes. Si no es mucho molestar... sería bueno que comentes o aportes tu solución y donde estaba la falla. De este modo si alguien se encuentra con un problema del mismo tipo, sepa como revertirlo.

Saludos,

SataSoft
20-01-2007, 02:48:13
ok lo primero q queria hacer era usar una ListPlayer, y Use
ListBox
* con este codigo en el evento DblClick
MediaPlayer1.Enabled := true;
i := lbx1.ItemIndex;
mediaplayer1.FileName:= lbx1.Items.Strings[i];
mediaplayer1.Open;
s := mediaplayer1.FileName;

* y este codigo en el Boton para abrir un archivo

lbx1.Items.Add(mediaplayer1.FileName);

es con repecto al ListBox

Ahora tengo un error al momento de 'Cancelar' la apertura de archivos
"No se puede determinar el tipo de dispositivo por la extencion del archivo"
yo inclui en mi Reproductor
mpg, mp3, avi y wav.
pq ese error?
este es el codigo del Boton q abre archivos 'BitBtn1'

procedure TF_mp3.BitBtn1Click(Sender: TObject);
begin
if Opendialog1.Execute = true Then
MediaPlayer1.FileName := Opendialog1.FileName;
MediaPlayer1.Open;
MediaPlayer1.DisplayRect :=rect(0,1,OleContainer1.Width,OleContainer1.Height);
MEdiaPlayer1.Play;
StatusBar1.SimpleText := 'Repoduciendo Archivo: ' + OpenDialog1.FileName;
Label3.Visible := True;
Label4.Visible := True;
lbx1.Items.Add(mediaplayer1.FileName);//este codigo es del ListBox1
end;

cualquier ayuda y/o comentario, sera bien recibida
gracias

Lepe
20-01-2007, 10:14:27
no tienes un bloque begin ... end, por eso sigue abriendo el archivo.

procedure TF_mp3.BitBtn1Click(Sender: TObject);
begin
if Opendialog1.Execute Then
begin
MediaPlayer1.FileName := Opendialog1.FileName;
MediaPlayer1.Open;
MediaPlayer1.DisplayRect :=rect(0,1,OleContainer1.Width,OleContainer1.Height);
MEdiaPlayer1.Play;
StatusBar1.SimpleText := 'Repoduciendo Archivo: ' + OpenDialog1.FileName;
Label3.Visible := True;
Label4.Visible := True;
lbx1.Items.Add(mediaplayer1.FileName);//este codigo es del ListBox1
end
else
ShowMessage('Cancelado por el usuario');


Saludos

SataSoft
20-01-2007, 18:05:40
;)gracias!!!
ahora.
Alguien a usado esto para pantalla completa.
uso este codigo pero no me sale...

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (HiWord(GetKeyState(VK_MENU)) <> 0) and (Key = 13) then
begin
if Form1.WindowState = WsNormal then
begin
Ancho := Form1.Width;//inicialmente tenia errores Con 'Ancho'
Alto := Form1.Height; //inicialmente tenia errores Con 'Alto'
Label1.Visible := False;
Label2.Visible := False;
Label3.Visible := False;
Label4.Visible := False;
MediaPlayer1.Visible := False;
BitBtn1.Visible := False;
StatusBar1.Visible := False;
ScrollBar1.Visible := False;
OleContainer1.Visible := False;
Form1.BorderStyle := BsNone;
Form1.WindowState := WsMaximized;
MediaPlayer1.Display := Form1;
MediaPlayer1.DisplayRect := rect(0,0,Form1.Clientwidth,Form1.ClientHeight);
end
else
begin
Form1.WindowState := WsNormal;
Form1.Width := Ancho;
Form1.Height := Alto;
Form1.Position := PoScreenCenter;
Label1.Visible := True;
Label2.Visible := True;
Label3.Visible := True;
Label4.Visible := True;
MediaPlayer1.Visible := True;
BitBtn1.Visible := True;
StatusBar1.Visible := True;
ScrollBar1.Visible := True;
OleContainer1.Visible := True;
Form1.BorderStyle := BsSingle;
MediaPlayer1.Display := OleContainer1;
MediaPlayer1.DisplayRect := rect(0,0,Form1.Clientwidth,Form1.ClientHeight);
end;
end;
end;
Gracias

Lepe
20-01-2007, 19:10:37
Perdona, pero de momento no pienso leer ese código, edita tu mensaje y añade las etiquetas delphi, (http://www.clubdelphi.com/foros/showthread.php?t=10056) para que se distinga en el código la identación, palabras reservadas, etc. (igual que el código delphi que yo puse.

Después le echaré un vistazo.

Espero que entiendas que es muy incómodo leer ese código así puesto, sé que solo cuentas con 5 mensajes y por ello es lógico que no sepas usarlas. No lo tomes como un reproche, sino como crítica constructiva ;).

Saludos.

ascrnet
17-02-2008, 22:47:17
ninguna de esta dos rutinas para controlar el volumen me funcionan :confused:

la de albertron no da error pero no baja el volumen :confused: eso que la llamo asi
SetVolume(0); //en silencio


y la otra de CHiCoLiTa me da error aqui :confused:
if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf


lo cambio por if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf) then

y tambien sale error ?

he buscado en el foro y no he encontrado ninguna rutina buena que sirva, alguien tiene alguna que realmente sirva :confused:

saludos

cHackAll
18-02-2008, 01:22:42
Talvez? (http://www.clubdelphi.com/foros/showthread.php?t=49280)

ascrnet
18-02-2008, 02:30:52
Talvez? (http://www.clubdelphi.com/foros/showthread.php?t=49280)

ok funciona gracias por el dato , pero esta rutina no me dara problemas mas adelante :confused: es que la encuentro un poco sucia :)

saludos

Delphius
18-02-2008, 14:54:23
ok funciona gracias por el dato , pero esta rutina no me dara problemas mas adelante :confused: es que la encuentro un poco sucia :)

saludos
:confused::confused: ¿Sucia?

¿Porqué no estás conforme?
Podrías optar por algún componente que lo haga por tí.
Podrías considerar lo dicho aquí (http://www.clubdelphi.com/foros/showpost.php?p=226060&postcount=23), aquí (http://www.clubdelphi.com/foros/showpost.php?p=171471&postcount=6), y/o aquí (http://www.clubdelphi.com/foros/showthread.php?t=24228&highlight=componente+volumen).

Saludos,

Lepe
18-02-2008, 16:20:10
¿Sucia? ¿Ahora se le llama así a saber programar con la API de windows?

... Lo que hay que oir....

Saludos

ascrnet
18-02-2008, 17:24:52
sucio por mi poca experiencia con manejar la API desde delphi :p

Delphius, no estoy conforme, por que encuentro que es muy enredado para mi entender :D y que el volumen sea de 0 a 65mil algo. no lo encuentro eficiente o sera por que la API no es eficiente :confused:


Lepe, sorry pero pense que era mas facil manejar la API.

bueno por lo que veo me combiene mas usar la API, ya que una libreria me puede restringir si cambio la version de delphi 7 que uso :D

gracias a todos por sus respuestas..

saludos

Delphius
18-02-2008, 17:40:28
sucio por mi poca experiencia con manejar la API desde delphi :p

Delphius, no estoy conforme, por que encuentro que es muy enredado para mi entender :D y que el volumen sea de 0 a 65mil algo. no lo encuentro eficiente o sera por que la API no es eficiente :confused:


Lepe, sorry pero pense que era mas facil manejar la API.

bueno por lo que veo me combiene mas usar la API, ya que una libreria me puede restringir si cambio la version de delphi 7 que uso :D

gracias a todos por sus respuestas..

saludos
No quiero pensar mal pero esa cara sonriente al referirte hacia mi... ¿Es a modo de burla?

A ver... si estas probando mi componente no deberías tener problemas, De hecho no lo tuve yo estando empleando Windows Me en aquel momento cuando lo diseñé... sobre XP menos problemas deberías tener.
Mi componente ha sido hecho para ser usado en forma sencilla y cómoda. Lo que hace es alterar el volumen del sistema mediante una API de forma camuflada. ¿Tanto molesta el tener que hacer un SetVolume()?:confused:

El componente fácilmente puede ser ampliado. ¿Porqué no pruebas añadirle lo que gustes?

Independientemente de cualquier biblioteca que uses... todo al final se reduce a la API. Si deseas usar directamente la API pues hazlo, si deseas conseguir un paquete, biblioteca, o lo que fuese también puedes usarlo.

Pues los componentes se han diseñado para evitar tener que emplear la API en forma directa... ¡esa es su ventaja! Si tanto dices que te cuesta usar la API ¿porqué no usar un componente?

Al final... ¿en que quedamos?
Explicate mejor. ¿Porqué no nos muestras lo que estás haciendo?

Saludos,

ascrnet
18-02-2008, 18:02:29
Delphius, mi idea no es ofender ha nadien. quisas me exprese mal. pero la idea es que yo estoy probando varias formas de hacer lo mismo con el tema del volumen. quisas para mi esa un poco complicado de entender ya que soy novato en delphi.

mira uso el siguiente codigo como bajar el volumen del TMediaPlayer, pero si veo el control de win no baja el volumen me refiero a lo grafico que no lo baja pero si a lo sonoro.


uses MMSystem;

Type
MCI_DGV_SETAUDIO_PARMS = record
dwCallback : DWORD;
dwItem : DWORd;
dwValue : DWORD;
dwOver : DWORD;
lpstrAlgorithm : PChar;
lpstrQuality : PChar;
end;

Type
MCI_STATUS_PARMS = record
dwCallback : DWORD;
dwReturn : DWORD;
dwItem : DWORD;
dwTrack : DWORD;
end;

var
Form1: TForm1;

const
MCI_SETAUDIO = $0873;
MCI_DGV_SETAUDIO_VOLUME = $4002;
MCI_DGV_SETAUDIO_ITEM = $00800000;
MCI_DGV_SETAUDIO_VALUE = $01000000;
MCI_DGV_STATUS_VOLUME = $4019;

//***** rutina de sonido
function GetMPVolume(MP : TMediaPlayer) : Integer;
var p: MCI_STATUS_PARMS;
begin
p.dwCallback := 0;
p.dwItem := MCI_DGV_STATUS_VOLUME;
mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p));
Result:=p.dwReturn;
end;

procedure SetMPVolume(MP : TMediaPlayer; Volume : Integer);
var p: MCI_DGV_SETAUDIO_PARMS;
begin
p.dwCallback := 0;
p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
p.dwValue := Volume;
p.dwOver := 0;
p.lpstrAlgorithm := nil;
p.lpstrQuality := nil;
mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));
end;

//bajar el sonido
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetMPVolume(MediaPlayer1,TrackBar1.Position)
end;
en cambio la que me dice cHackAll baja el master del volumen y tanto el sonoro como del control de win.

tu libreria todavia no la pruebo pero me gustaria saber si la haz probado en delphi superior a 7 , no se como 2007.

saludos

Delphius
18-02-2008, 18:21:14
ascrnet,
Sería oportuno que me aclares algo: ¿Deseas trabajar con el volumen del sistema, ó sólo dentro de tu aplicación?

Porque buscando entre los hilos vas a encontrar algunos que hace una u otra forma. Por ejemplo mi componente trabaja con el volumen del sistema. Mientras que si te vas al último enlace que puse llegarás hacia un link donde hay un componente que lo hace en forma local (unicamente dentro de tu aplicación).

Me confunde el hecho de que hables de la barra de win, de que si baja o no baja... Y esto es lo que me hace dudar de que si lo que deseas es bajar el volumen del sistema o solo el de tu aplicación.

No he probado mi componente en versiones más nuevas, fue desarrollado en la 6, en la 7 no habría problemas aparentemente. Al menos nadie habrió un hilo quejandose de que falle mi componente.

Hace tiempo que no lo empleo, de hecho lo había perdido en un formateo. Y ahora el lugar en dode vive es este maravilloso lugar. Yo he cedido el componente para el uso del público. Y quien desee modificarlo puede hacerlo.

Saludos,

ascrnet
19-02-2008, 00:23:24
ascrnet,
Sería oportuno que me aclares algo: ¿Deseas trabajar con el volumen del sistema, ó sólo dentro de tu aplicación?

Porque buscando entre los hilos vas a encontrar algunos que hace una u otra forma. Por ejemplo mi componente trabaja con el volumen del sistema. Mientras que si te vas al último enlace que puse llegarás hacia un link donde hay un componente que lo hace en forma local (unicamente dentro de tu aplicación).

Me confunde el hecho de que hables de la barra de win, de que si baja o no baja... Y esto es lo que me hace dudar de que si lo que deseas es bajar el volumen del sistema o solo el de tu aplicación.

No he probado mi componente en versiones más nuevas, fue desarrollado en la 6, en la 7 no habría problemas aparentemente. Al menos nadie habrió un hilo quejandose de que falle mi componente.

Hace tiempo que no lo empleo, de hecho lo había perdido en un formateo. Y ahora el lugar en dode vive es este maravilloso lugar. Yo he cedido el componente para el uso del público. Y quien desee modificarlo puede hacerlo.

Saludos,

:D para el sistema, lo que pasa es que he probados varios y algunos bajan o suben el control de volumen de windows
WinExec('SNDVOL32.EXE',SW_SHOWNORMAL);al mismo tiempo que lo bajas o subes en delphi. ha eso me refiero.

lo otro como adjunto tu volumen.pas a mi proyecto en delphi :o no entiendo como ? paso a paso pliz :D

saludos

Delphius
19-02-2008, 14:39:45
Hola ascrnet,
Mi componente hace lo que dices.
Si bajas el volumen con mi componente notarás que en la barra del volumen de Windows baja. Si no deseas que suceda esto, la tendrás dificil. Al menos suena lógico que suceda esto: Si bajas el volumen de Windows, es lógico que este actue en base a dicho cambio.

Por lo segundo... no tengo Delphi a mano. Al menos en la versión 6 y 7 entre las opciones del menú hay una que dice claramante "Install Component", si no me falla la memoria es así: Component -> Install Component. Allí te aparecerá un cuadro de diáogo en el que debes suministrar la ruta al pas. Le das OK y sigues las instrucciones.

Saludos,

ascrnet
19-02-2008, 19:58:58
Hola ascrnet,
Mi componente hace lo que dices.
Si bajas el volumen con mi componente notarás que en la barra del volumen de Windows baja. Si no deseas que suceda esto, la tendrás dificil. Al menos suena lógico que suceda esto: Si bajas el volumen de Windows, es lógico que este actue en base a dicho cambio.

Por lo segundo... no tengo Delphi a mano. Al menos en la versión 6 y 7 entre las opciones del menú hay una que dice claramante "Install Component", si no me falla la memoria es así: Component -> Install Component. Allí te aparecerá un cuadro de diáogo en el que debes suministrar la ruta al pas. Le das OK y sigues las instrucciones.

Saludos,

mmm, no el codigo que te puse arriba no baja nada del controlador de windows, pero si baja el volumen del mp3 nomas.

no funciona, en Component -> Install Component solo permite .dpk y .dpkw . si pongo el .pas de tu lib me dice que no sirve :confused: uso delphi 7.
acuerdate que solo tengo el tvoulumen.pas nomas

saludos