各位大哥,我作了一个播放器(作业来的,很幼稚的,交老师的,我想取得与控制声音大小,怎么实现)我用那个TrackBar控件来控制。但TrackBar好像也不好用,咆得太快了!!!请各位老哥帮帮小弟,因为这个周末要交了!!!
解决方案 »
- 寻找一段 磁性窗体代码。
- 这个exit语句的问题在哪里?
- 求助:Delphi用ADO连接SQL Server问题
- 把鼠标置成漏斗状后,怎么让它点击程序窗口任何地方都无效,谢谢!
- VPN 网络编程 先谢谢
- 关于pdf控件的问题,请教各位大虾
- 请问TIdFTP用TIOHandlerThrottle如何限制速度?
- 问一个很简单的ado显示access数据库的内容的问题
- 我用Delphi写了一个IE插件Toolbar,如何取得用户在我的主页注册时的Session,如recName的值!
- 急:请教delphi访问Oracle数据(网络数据库)的几个问题!
- 关于webbrowser控件?
- DELPHI系统问题!!!
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好象没错!
有相应的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 写入声音输出设备
老哥,我将你上面的代码照贴上去,好像根本就不能改变音量的大小!也忘了告诉老哥们,我做的是CD播放器,用TMediaplayer来做!昨晚我用上面的的代码试了很久,就是不行,也改了波形文件输出设备标识符(用0--8)都试了;就是不行,我也用其它的CD播放器例子的控制声音方法也试了,也不行!(用auxoutsetvolume(id:integer,volume:dword);)请各位老哥们再帮我想想办法吧!这个周末前就要交了啊!!!!小弟在这谢谢各位大哥了!