使用mediaplayer播放mp3时,如何控制左右声道的问题?高手请关注!!! 不能,delphi内的mediaplayer是调用系统的Media Player的函数,系统的Media Player都没有此功能,delphi内的更没有了,除非你自己做一个控件来完成。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 uses mmsystem;auxGetDevCaps auxSetVolume()auxGetVolume unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Mmsystem, ComCtrls, StdCtrls;type TForm1 = class(TForm) TrackBar1: TTrackBar; TrackBar2: TTrackBar; TrackBar3: TTrackBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; procedure TrackBar1Change(Sender: TObject); procedure TrackBar2Change(Sender: TObject); procedure TrackBar3Change(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.TrackBar1Change(Sender: TObject);var t, v: longint; //t的最大值为8位的二进制:11111111; //用v来表示音量的大小,这是个32为的整数 //,高16位表示右声道的音量,低16为表示 //左声道的音量begin t := Trackbar1.Position;//得到Trackbar的位置, //可用这个值来表示音量的大小 v := (t shl 8) or (t shl 24);//将t作移8位、24位 waveoutsetvolume(0,v);//设置音量 Label4.Caption := IntToStr(Trackbar1.Position);end;procedure TForm1.TrackBar2Change(Sender: TObject);var t, v: longint;begin t := Trackbar2.Position; waveoutgetvolume(0, @v);//@表示指向变量v的指针(32位) //调用此函数的用意是得到右声道的值,做到在调节左声道的 //时候,不改变右声道 v := v and $ffff0000 or (t shl 8);//数字前加$表示式十六进制的数字 waveoutsetvolume(0,v); Label5.Caption := IntToStr(Trackbar2.Position);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); Label6.Caption := IntToStr(Trackbar3.Position);end;procedure TForm1.FormCreate(Sender: TObject);var v: longint;begin waveoutgetvolume(0, @v);//得到现在的音量 trackbar2.Position := hi(v);//设置左声道滑块的正确位置 trackbar3.Position := hi(v shr 16);//设置右声道滑块的正确位置//注:函数hi(v)的作用为:返回一个16位无符号整数的高8位//如果v为32位,则高16位自动被自动忽略了。//只用高8位时可是调节更明显。//对波形文件可以用wavoutgetvolume函数, 对于cd文件可以用//auxgetvolume函数end;end. 双视频,谁到也迷糊(dspack) Clientdataset+Datasource+dbgrid,如何记录所有 applyupdate 过的记录? 请问用OleContainer打开一个doc文档之后,如何在OleContainer修改此文档并保存?(200分) Dll中子窗口的输出问题。 怎么模拟右Ctrl键? OleContainer 安装Delphi出问题了。 怎样逼迫edit1中输入数据是整型的? 一个小问题!非常菜的问题,很容易得分的。 我的运用程序怎么不能运行? 谢谢了。请务必帮我看看 弟兄们,请告诉我如何获得2000下默认打印机的端口?
auxSetVolume()
auxGetVolume
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Mmsystem, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure TrackBar1Change(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure TrackBar3Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.TrackBar1Change(Sender: TObject);
var
t, v: longint;
//t的最大值为8位的二进制:11111111;
//用v来表示音量的大小,这是个32为的整数
//,高16位表示右声道的音量,低16为表示
//左声道的音量
begin
t := Trackbar1.Position;//得到Trackbar的位置,
//可用这个值来表示音量的大小
v := (t shl 8) or (t shl 24);//将t作移8位、24位
waveoutsetvolume(0,v);//设置音量
Label4.Caption := IntToStr(Trackbar1.Position);
end;procedure TForm1.TrackBar2Change(Sender: TObject);
var
t, v: longint;
begin
t := Trackbar2.Position;
waveoutgetvolume(0, @v);//@表示指向变量v的指针(32位)
//调用此函数的用意是得到右声道的值,做到在调节左声道的
//时候,不改变右声道
v := v and $ffff0000 or (t shl 8);//数字前加$表示式十六进制的数字
waveoutsetvolume(0,v);
Label5.Caption := IntToStr(Trackbar2.Position);
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);
Label6.Caption := IntToStr(Trackbar3.Position);
end;procedure TForm1.FormCreate(Sender: TObject);
var
v: longint;
begin
waveoutgetvolume(0, @v);//得到现在的音量
trackbar2.Position := hi(v);//设置左声道滑块的正确位置
trackbar3.Position := hi(v shr 16);//设置右声道滑块的正确位置
//注:函数hi(v)的作用为:返回一个16位无符号整数的高8位
//如果v为32位,则高16位自动被自动忽略了。
//只用高8位时可是调节更明显。
//对波形文件可以用wavoutgetvolume函数, 对于cd文件可以用
//auxgetvolume函数end;end.