各位大哥,我作了一个播放器(作业来的,很幼稚的,交老师的,我想取得与控制声音大小,怎么实现)我用那个TrackBar控件来控制。但TrackBar好像也不好用,咆得太快了!!!请各位老哥帮帮小弟,因为这个周末要交了!!!

解决方案 »

  1.   

    //音量控制
    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.trackbar1changer (sender:tobject);//左声道
    var t,v:longint;
    begin
    t:=trackbar1.postion;
    wavoutgetvolume(0,@v);
    v:=v and $ffff0000 or (t shl 8);
    wavoutsetvolume(0,v);
    end;procedure tform1.trackbar2changer (sender:tobject);//右声道
    var t,v:longint;
    begin
    t:=trackbar2.postion;
    wavoutgetvolume(0,@v);
    v:=v and $0000ffff or (t shl 24);
    wavoutsetvolume(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;end.
    函数说明:waveOutSetVolume
    第一个参数是波形文件输出设备标识符;
    第二个参娄是音量大小。这是一个32位的整数,低16位表示左声道的音量,
    高16位表示右声道的音量。waveOutGetVolume
    第一个参数是波形文件输出设备标识符;
    第二个参数是一个32位整数的指针。
    可以用auxoutsetvolume(id:integer,volume:dword);具体使用方法请查阅DELPHI帮助,WIN32SDK.HLP。 其中ID是设备代号,我在实际编程中发现ID随着机器的不同而不同,但是他可以直接控制各种设备的音量,你可以用不同的ID试一试(ID一般在1~8之间),音量设置方法wjiachun好象没错!
      

  2.   

    贴一段:你自已试试!
    有相应的API函数可查(声音相关)
    waveInAddBuffer               向声音输入设备发送缓冲区       
    waveInClose                   关闭声音输入设备                        
    waveInGetDevCaps                        获取声音输入设备性能                   
    waveInGetErrorText                      获取声音出错的信息文本                   
    waveInGetID                             获取声音输入设备ID                   
    waveInGetNumDevs                        返回声音输入设备数量                   
    waveInGetPosition                       获取声音设备输入位置                   
    waveInMessage                           向声音输入设备发送信息                  
    waveInOpen                              打开声音输入设备                   
    waveInPrepareHeader                     预备声音输入缓冲区                   
    waveInReset                             停止声音输入设备工作                   
    waveInStart                             停止声音输入设备工作                   
    waveInStop                              停止声音输入                   
    waveInUnprepareHeader                   清除预备的声音文件头                   
    waveOutBreakLoop                        中断声音输出循环                   
    waveOutClose                            关闭声音输出设备                   
    waveOutGetDevCaps                       获取声音输出设备性能                  
    waveOutGetErrorText                     获取声音出错文本                  
    waveOutGetID                            获取声音输出设备ID                  
    waveOutGetNumDevs                       获取声音输出设备数量                  
    waveOutGetPitch                         获取声音输出的强度                  
    waveOutGetPlaybackRate                  获取声音回放率                  
    waveOutGetPosition                      获取声音回放位置                  
    waveOutGetVolume                        获取声音音量                  
    waveOutMessage                          向声音输出设备发送消息               
    waveOutOpen                             打开声音输出设备               
    waveOutPause                            暂停声音回放                   
    waveOutPrepareHeader                    预备声音回放数据块                   
    waveOutReset                            停止声音回放                   
    waveOutRestart                          重开始声音回放                   
    waveOutSetPitch                         设置波形输出强度                   
    waveOutSetPlaybackRate                  设置回放率                   
    waveOutSetVolume                        设置输出音量             
    waveOutUnprepareHeader                  清除预备声音数据块                
    waveOutWrite                            写入声音输出设备
      

  3.   

    to:  cg1120(代码最优化-§为这世界,添些美丽色彩§) 
       老哥,我将你上面的代码照贴上去,好像根本就不能改变音量的大小!也忘了告诉老哥们,我做的是CD播放器,用TMediaplayer来做!昨晚我用上面的的代码试了很久,就是不行,也改了波形文件输出设备标识符(用0--8)都试了;就是不行,我也用其它的CD播放器例子的控制声音方法也试了,也不行!(用auxoutsetvolume(id:integer,volume:dword);)请各位老哥们再帮我想想办法吧!这个周末前就要交了啊!!!!小弟在这谢谢各位大哥了!
      

  4.   

    各位大哥,控制CD音频是不是要设置TMediaplayer的某些属性???怎么设?上面的方法,昨晚我用播放MP3的方法试了,可以控制!!但怎么样才能控制CD音频啊!!快要到期了,请各位老哥救救小弟吧!!我把TMediaplayer.Devicetype:=AutoSelect;不知这样会不会有关联???请各位老哥救救小弟吧!小弟在这谢谢各位大哥了!