先在窗体上放两个TTrackBar,分别命名为TrackBar1,TrackBar2,属性Max都设置为65535,如果觉得刻度太密了,可以把Frequency属性值设置大一些,然后在Uses段加入MMSystem,并在TrackBar1和TrackBar2的OnChange事件都写上下列语句:procedure TForm1.TrackBar1Change(Sender: Tobject);
var Wave:string;
begin
Wave:='$'+inttohex(TrackBar1.Position,4)+inttohex(TrackBar2.Position,4);
waveoutsetvolume(0,strtoint(Wave));
end;
/////////////////////////////////////////////
WaveOutSetVolume(hwo: Integer; dwVolume: Cardinal);hwo is MediaPlayer1.DeviceId,example: Right\/ | Left\/
dwVolume for Full L+R = $FFFFFFFF
dwVolume for Full L no R = $0000FFFF
dwVolume for Full R no L = $FFFF0000
dwVolume for no sound = $00000000
/////////////////////////////////////////////////uses MMSystemtype
TVolType = (vtLeft, vtRight);
TVol = array[vtLeft..vtRight] of word;procedure TVolForm.GetVolumes(var DevId : word;
var VolLeft, VolRight : word);
{volume is returned as a pointer to a DWord with the most
significant word for the left channel. The channels are
extracted by treating the DWord as a two element array and
accessing the two array elements for the Lt and Rt volumes}
var
Error : integer;
MsgResponse : word;
TempVol : TVol;
begin
Error := AuxGetVolume(DevId, @TempVol);
if Error <> 0 then begin
Timer1.Enabled := false;
MsgResponse := MessageDlg('Error Reading Volume : ' + IntToStr(Error) +
chr(13)
+ 'DevId : ' + IntToStr(DevId) + chr(13)
+ chr(13)
+ 'Set Next Device ?',
mtError, [mbYes, mbCancel], 0);
if MsgResponse = mrYes then {try the next Device Id}
DevId := DevId + 1
else begin
DevId := 0;
PChangeType := Nil;
end; {else MsgResponse = mrCancel}
Exit;
end; {if Error <> 0}
VolLeft := TempVol[vtLeft];
VolRight := TempVol[vtRight];
end;procedure TVolForm.SetVolumes(DevId : word;
var VolLeft, VolRight : word);
{volume is set by passing a DWord value with the most
significant word set for the left channel, and the least
significant word set for the right channel. The channels are
set by treating the DWord as a two element array and
setting the two array elements for the Lt and Rt volumes}
var
Error : integer;
TempVol : TVol;
begin
TempVol[vtLeft] := VolLeft;
TempVol[vtRight] := VolRight;
Error := AuxSetVolume(DevId, longint(TempVol));
if Error <> 0 then
MessageDlg('Error Setting Volume : ' + IntToStr(Error),
mtError, [mbOK], 0);
end;
var Wave:string;
begin
Wave:='$'+inttohex(TrackBar1.Position,4)+inttohex(TrackBar2.Position,4);
waveoutsetvolume(0,strtoint(Wave));
end;
/////////////////////////////////////////////
WaveOutSetVolume(hwo: Integer; dwVolume: Cardinal);hwo is MediaPlayer1.DeviceId,example: Right\/ | Left\/
dwVolume for Full L+R = $FFFFFFFF
dwVolume for Full L no R = $0000FFFF
dwVolume for Full R no L = $FFFF0000
dwVolume for no sound = $00000000
/////////////////////////////////////////////////uses MMSystemtype
TVolType = (vtLeft, vtRight);
TVol = array[vtLeft..vtRight] of word;procedure TVolForm.GetVolumes(var DevId : word;
var VolLeft, VolRight : word);
{volume is returned as a pointer to a DWord with the most
significant word for the left channel. The channels are
extracted by treating the DWord as a two element array and
accessing the two array elements for the Lt and Rt volumes}
var
Error : integer;
MsgResponse : word;
TempVol : TVol;
begin
Error := AuxGetVolume(DevId, @TempVol);
if Error <> 0 then begin
Timer1.Enabled := false;
MsgResponse := MessageDlg('Error Reading Volume : ' + IntToStr(Error) +
chr(13)
+ 'DevId : ' + IntToStr(DevId) + chr(13)
+ chr(13)
+ 'Set Next Device ?',
mtError, [mbYes, mbCancel], 0);
if MsgResponse = mrYes then {try the next Device Id}
DevId := DevId + 1
else begin
DevId := 0;
PChangeType := Nil;
end; {else MsgResponse = mrCancel}
Exit;
end; {if Error <> 0}
VolLeft := TempVol[vtLeft];
VolRight := TempVol[vtRight];
end;procedure TVolForm.SetVolumes(DevId : word;
var VolLeft, VolRight : word);
{volume is set by passing a DWord value with the most
significant word set for the left channel, and the least
significant word set for the right channel. The channels are
set by treating the DWord as a two element array and
setting the two array elements for the Lt and Rt volumes}
var
Error : integer;
TempVol : TVol;
begin
TempVol[vtLeft] := VolLeft;
TempVol[vtRight] := VolRight;
Error := AuxSetVolume(DevId, longint(TempVol));
if Error <> 0 then
MessageDlg('Error Setting Volume : ' + IntToStr(Error),
mtError, [mbOK], 0);
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货