unit sound;interfaceuses
  MMSystem,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer;const
  MCI_SETAUDIO = $0873;
  MCI_DGV_SETAUDIO_VOLUME = $4002;
  MCI_DGV_SETAUDIO_ITEM = $00800000;
  MCI_DGV_SETAUDIO_VALUE =000000;
  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;type
  TTMediaPlayerForm = class(TForm)
    ScrollBar1: TScrollBar;
    MediaPlayer1: TMediaPlayer;
    procedure FormCreate(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  TMediaPlayerForm: TTMediaPlayerForm;implementation{$R *.dfm}{设置音量,范围 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 TTMediaPlayerForm.FormCreate(Sender: TObject);
begin
  ScrollBar1.Min := 0;
  ScrollBar1.Max := 1000;
  ScrollBar1.Position := MPGetVolume(MediaPlayer1);
  MediaPlayer1.Close;
  MediaPlayer1.FileName:='D:\光盘\textwav\bj\bjsound1.mp3';
  MediaPlayer1.Open;
end;//处理滚动条的OnChange事件(设置Media Player的音量):
procedure TTMediaPlayerForm.ScrollBar1Change(Sender: TObject);
begin
  MPSetVolume(MediaPlayer1, ScrollBar1.Position) ;
end;end.