Форум: "Media";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
ВнизИзменение Громкости (Volume Control) в Win Найти похожие ветки
← →
Kirich (2003-10-11 22:13) [0]Уважаемые мастера!
Подскажите как програмно менять громкость (Volume Control) в Windows. Но подчеркиваю
меня интересует не семейство функций waveOut, а нечто для изменения Volume Control!!!
Здесь я уже задавал етоть вопрось:
http://delphimaster.net/view/8-1063496600/
но что-то нет ответа.
В общем, меня интересует кусок кода.
Заранее благодарен.
← →
Zew (2003-10-12 16:08) [1]
> В общем, меня интересует кусок кода.
Вот весь код который проверят поставлены дровва на звук или нет и если поставлены то работает
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, mmSystem;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
VolumeBar: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
volumeID,volmin,volmax:integer;
mixcaps:TMixerCaps;
details:TMixerControlDetails;
mixctrl:TMixerControl;
valdets:TMixerControlDetailsUnsigned;
hmix:integer;
svEnable : boolean;
curvolume:dword;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if not svEnable then Exit;
VolumeBar.Position := VolumeBar.Position - (VolumeBar.Max - VolumeBar.Min) div 10;
if VolumeBar.Position < VolumeBar.Min then
VolumeBar.Position := VolumeBar.Min;
Details.cbStruct := SizeOf(Details);
Details.dwControlID := VolumeID;
details.cChannels := 1;
Details.cMultipleItems := 0;
Details.cbDetails := SizeOf(Valdets);
Details.paDetails := @Valdets;
if VolumeBar.Position > 4000 then
valdets.dwValue := VolumeBar.Position
else
valdets.dwValue := 0;
MixerSetControlDetails(hmix, @details, MIXER_SETCONTROLDETAILSF_VALUE);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not svEnable then Exit;
VolumeBar.Position := VolumeBar.Position + (VolumeBar.Max - VolumeBar.Min) div 10;
if VolumeBar.Position > VolumeBar.Max then
VolumeBar.Position := VolumeBar.Max;
Details.cbStruct := SizeOf(Details);
Details.dwControlID := VolumeID;
Details.cChannels := 1;
Details.cMultipleItems := 0;
Details.cbDetails := SizeOf(Valdets);
Details.paDetails := @Valdets;
if VolumeBar.Position > 4000 then
Valdets.dwValue := VolumeBar.Position
else
Valdets.dwValue:=0;
MixerSetControlDetails(hmix, @details, MIXER_SETCONTROLDETAILSF_VALUE);
end;
procedure TForm1.FormCreate(Sender: TObject);
Var i : Integer;
MixLine : TMixerLine;
MixLineCtrl: TMixerLineControls;
MixCtrl : TMixerControl;
begin
inherited;
MixerOpen(@hmix, 0, Handle, 0, MIXER_OBJECTF_MIXER or CALLBACK_WINDOW);
MixerGetDevCaps(0, @mixcaps, SizeOf(MixCaps));
For I := 0 to MixCaps.cDestinations - 1 do
begin
Mixline.dwDestination := I;
Mixline.cbStruct := SizeOf(Mixline);
MixerGetLineInfo(hmix, @mixline, MIXER_GETLINEINFOF_DESTINATION);
If Mixline.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS then
break;
end;
if Mixline.dwComponentType <> MIXERLINE_COMPONENTTYPE_DST_SPEAKERS then
begin
Application.MessageBox("Драйвера на звук не найдены!",
"Ошибка", mb_Ok or mb_IconWarning);
svEnable := False;
Exit;
end
else
svEnable := True;
MixLineCtrl.cbStruct := SizeOf(MixLineCtrl);
MixLineCtrl.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
MixLineCtrl.dwLineID := MixLine.dwLineID;
MixLineCtrl.cControls := 2;
MixLineCtrl.cbmxctrl := Sizeof(MixCtrl);
MixCtrl.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
MixLineCtrl.pamxctrl := @MixCtrl;
MixerGetLineControls(hmix, @mixlinectrl, MIXER_GETLINECONTROLSF_ONEBYTYPE);
VolumeID := MixCtrl.dwControlID;
VolMin := MixCtrl.Bounds.dwMinimum;
VolMax := MixCtrl.Bounds.dwMaximum;
Details.cbStruct := Sizeof(Details);
Details.dwControlID := VolumeID;
Details.cChannels := 1;
Details.cMultipleItems := 0;
Details.cbDetails := SizeOf(Valdets);
Details.paDetails := @valdets;
MixerGetControlDetails(hmix, @details, MIXER_GETCONTROLDETAILSF_VALUE);
CurVolume := Valdets.dwValue;
VolumeBar.Min := VolMin;
VolumeBar.Max := VolMax;
VolumeBar.Position := CurVolume;
end;
end.
← →
Kirich (2003-10-12 18:14) [2]2 Zew: БОЛЬШОЕ человеческое спасибо !!!
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c