我在form上放了两个TMediaPlayer控件(delphi自带的那个),一个用于播放背景音乐,另外一个用于播放前景声效,我想给用户做一个按钮来控制声音大小,请问有那位高手能指点一下,谢谢!

解决方案 »

  1.   

    vb的   '设置音量
       FrmMain.MediaPlayer.settings.volume = iValuedephi不会
      

  2.   

    可以用auxoutsetvolume(id:integer,volume:dword);具体使用方法请查阅DELPHI帮助。
      

  3.   

    控制系统音量及声道----------------------------
    ---------------------------三个TrackBar的属性设置:Max:=255;Frequency:=16;  uses  mmsystem;
    procedure TForm1.TrackBar1Change(Sender: TObject);       /////////音量
    var
      t,v:Longint;
    begin
      //   if   a=0   then   Exit;
        t:=TrackBar1.Position;
        v:=(t   shl   8)or(t   shl   24);
        waveOutSetVolume(0,v);
    end;procedure TForm1.TrackBar2Change(Sender: TObject);      ////左声道
    var
      t,v:Longint;
    begin
          t:=TrackBar2.Position;
          waveOutGetVolume(0,@v);
          v:=v   and   $ffff0000   or   (t   shl   8);
          waveOutSetVolume(0,v);
    end;procedure TForm1.TrackBar3Change(Sender: TObject);    /////右声道
    var   
      t,v:Longint;   
    begin
          t:=TrackBar3.Position;   
          waveOutGetVolume(0,@v);
          v:=v   and   $0000ffff   or   (t   shl   24);   
          waveOutSetVolume(0,v);
    end;procedure TForm1.FormCreate(Sender: TObject);      //////////获得当前音量值
    var
      v:longint;
    begin
          waveOutGetVolume(0,@v);
          TrackBar2.Position:=hi(v);
          TrackBar3.Position:=hi(v   shr   16);
          if   hi(v)>hi(v   shr   16)   then
            TrackBar1.Position:=hi(v)
          else
            TrackBar1.Position:=hi(v   shr   16);
    end;
      

  4.   

    因为我的程序上面有两个MEDIAPLAYER,我是想分别控制这两个mediaplayer的声音大小,比如说播放前景音效的时候,把背景音乐调小,楼上andyzhou1101的那个方法在这里不适用啊
      

  5.   

    dspack是什么东东,能详细说一下吗?
      

  6.   

    参考下面的------------------------
    -------------------------uses
      MMSystem;const
      MCI_SETAUDIO = $0873;
      MCI_DGV_SETAUDIO_VOLUME = $4002;
      MCI_DGV_SETAUDIO_ITEM = $00800000;
      MCI_DGV_SETAUDIO_VALUE = $01000000;
      MCI_DGV_STATUS_VOLUME = $4019;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; {设置音量,范围 0 - 1000}procedure MPSetVolume(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; {获得音量,范围 0 - 1000}function MPGetVolume(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;  //用法:在Delphi窗体中放入一个TMediaPlayer("MediaPlayer1")和一个TScrollBar("ScrollBar1")。 //在窗体的OnCreate事件中,设置滚动条并且将一个媒体文件导入到MediaPlayer中:  procedure TMediaPlayerForm.FormCreate(Sender: TObject) ;
    begin
      ScrollBar1.Min := 0;
      ScrollBar1.Max := 1000;
      ScrollBar1.Position := MPGetVolume(MediaPlayer1);
      MediaPlayer1.Close;
      MediaPlayer1.FileName:='c:\favorite.mp3';
      MediaPlayer1.Open;end;//处理滚动条的OnChange事件(设置Media Player的音量):procedure TMediaPlayerForm.ScrollBar1Change(Sender: TObject) ;
    begin
      MPSetVolume(MediaPlayer1, ScrollBar1.Position) ;
    end;
      

  7.   

    谢谢 andyzhou1101 的帮助
    代码我测试过了,没问题,非常感谢