我建议你调用windows的那个程序。
就是音量调节的。
比较全一些。
就是音量调节的。
比较全一些。
解决方案 »
- 关于FindControl的问题
- 我读取4个BYTE值。。然后如何转换成LONGWORD值
- 1、listview多选删除如何实现?? 2、从txt中读取大量数据如何快速显示在listview中。3、从txt中读取大量数据如何快速显示在Treeview中
- 如何用Delphi编程实现Sql2000数据库中主从数据表的导出与导入??
- 有关BDE出错的问题:
- 请问如何在Access中插入和查询日期,急!急!急!急!急!
- 我出50块钱+1000分谁能回答我的问题?
- ActionList控件只能控制当前窗体的控件吗?
- Toolbar问题
- Help Me!!!!(大家一起来!!)
- 关于流程图软件的问题?
- 请高手教教我,一定给分,绝对!!!!!!!!!!!! 是关于主菜单的问题.
setmidioutvolume
等
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.
//下面是个单元,包含到工程中就可以用了!!!!
unit SetVolumeUnit;
interface
uses
Windows,mmSystem;
Var
LeftVolume,RightVolume : WORD;
Volume : DWORD;
procedure InitVolume;
procedure SetLeftVolume(Value : WORD);
procedure SetRightVolume(Value: WORD);
procedure SetVolume(Value : DWORD);
function GetLeftVolume : WORD;
function GetRightVolume: WORD;
function GetVolume: DWORD;
implementation
procedure InitVolume;
var
InitVolume1 : DWORD;
begin
WaveOutGetVolume(0,@InitVolume1);
LeftVolume:=LOWORD(InitVolume1);
RightVolume:=HIWORD(InitVolume1);
Volume:=InitVolume1;
end;
procedure SetLeftVolume(Value : WORD);//设置左声道
begin
LeftVolume:=Value;
Volume:=MAKELONG(RightVolume,LeftVolume);
WaveOutSetVolume(0,Volume);
end;
procedure SetRightVolume(Value : WORD);//设置右声道
begin
RightVolume:=Value;
Volume:=MAKELONG(RightVolume,LeftVolume);
WaveOutSetVolume(0,Volume);
end;
procedure SetVolume(Value : DWORD);
begin
Volume:=Value;
WaveOutSetVolume(0,Volume);
end;
Function GetLeftVolume : WORD;
begin
Result:=LeftVolume;
end;
Function GetRightVolume: WORD;
begin
Result:=RightVolume;
end;
Function GetVolume : DWORD;
begin
Result:=Volume;
end;
initialization
InitVolume;
end.