关于音量控制的问题,请知道的朋友帮帮忙,不知道的朋友帮着顶一下,感谢! 要如何才能把下面的选项勾上:双击右下角喇叭图标,会弹出音量控制窗口,选“选项-属性-录音”,下面会出现“单声道”“双声道”的选项问题1:如何选中双声道?问题2:当选择了双声道并点击确定后,如何选中“双声道”下面的勾。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 微软没有公开这方面的接口。你也可以用Windows API直接操作音量控制程序窗口上的控件,但是这个方法依赖于客户运行的音量控制程序的版本,而且是不被官方支持的。 好像可以,有个老外的delphi程序做到了,但是我试了不管用 给你2个例子:procedure TForm1.TrackBar1Change(Sender: TObject);vart,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;begint:=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;begint:=trackbar2.postion;wavoutgetvolume(0,@v);v:=v and $0000ffff or (t shl 24);wavoutsetvolume(0,v);end;//获得当前音量值procedure TForm1.FormCreate(Sender: TObject);varv:longint;beginwaveOutGetVolume(0,@v);TrackBar2.Position:=hi(v);TrackBar3.Position:=hi(v shr 16);if hi(v)>hi(v shr 16) thenTrackBar1.Position:=hi(v)elseTrackBar1.Position:=hi(v shr 16);end;end. 函数说明:MMRESULT waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume ); MMRESULT waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume ); waveOutSetVolume第一个参数是波形文件输出设备标识符;第二个参娄是音量大小。这是一个32位的整数,低16位表示左声道的音量,高16位表示右声道的音量。waveOutGetVolume第一个参数是波形文件输出设备标识符;第二个参数是一个32位整数的指针。//详细的参考msdn 谢谢楼上各位仁兄!感激!TO baiduan(小安子) :虽然这不是我想实现的功能,但还是谢谢你!哪位仁兄知道方法,请赐教,谢谢哈:)不知道的也请帮俺顶顶哦 我有遇到当同时CONNECT两个DB时,会在调试时报错的情况,感觉DELPHI在调试时有些不太稳。因为同样的方法在另一支FUNCTION里是可以调试成功的。而且同事也遇到过同样的问题。感觉怪怪的 重定向管道的一些问题 急:→→→→→→→100分求ehlib的full version 版!!!!!!! 如何判断主窗体的状态(例:是否最小化?) ADOQUERY执行遇到的奇怪问题 求救(在线等) 告诉大家一个好消息 哪里有Delphi 6的SP2下载? 都提了好几次问题了,还没人能答上来,哎。。。再提。。。。。。。。。。 哪位高人讲解一下keypress的例子 200分征答两个简单问题,兄弟们一定要进来看看。 请大家帮个忙,帮忙者有分 delphi如何实现VB中的sendkeys??????????
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.
函数说明:
MMRESULT waveOutGetVolume(
HWAVEOUT hwo,
LPDWORD pdwVolume );
MMRESULT waveOutSetVolume(
HWAVEOUT hwo,
DWORD dwVolume );
waveOutSetVolume
第一个参数是波形文件输出设备标识符;
第二个参娄是音量大小。这是一个32位的整数,低16位表示左声道的音量,
高16位表示右声道的音量。
waveOutGetVolume
第一个参数是波形文件输出设备标识符;
第二个参数是一个32位整数的指针。//详细的参考msdn
TO baiduan(小安子) :虽然这不是我想实现的功能,但还是谢谢你!哪位仁兄知道方法,请赐教,谢谢哈:)不知道的也请帮俺顶顶哦