Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Изменение Громкости (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 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
14-39016
Dimedrol
2004-01-23 16:58
2004.02.13
Не могу запустить


1-38798
niko4543
2004-02-02 09:58
2004.02.13
Тэстирование


6-38988
lex2003
2003-12-10 13:34
2004.02.13
Помоготе с написанием веб-браузра


1-38802
Headout
2004-02-03 12:44
2004.02.13
ImageXClick - глюк с координатами


1-38779
AlexeyITN
2004-02-03 16:04
2004.02.13
ProgressBar1 и TThread