Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.012 c
14-39080
Suntechnic
2004-01-23 18:34
2004.02.13
Мастера побеждают!


14-39017
Ig
2004-01-26 00:03
2004.02.13
Перехват сообщения Windows


14-39045
real_dimedrol
2004-01-20 16:51
2004.02.13
Создание компанента (собираю идеи)


1-38918
snake1977
2004-02-04 13:11
2004.02.13
Теряется память!!!!


1-38955
10100010110110110001
2004-02-03 22:47
2004.02.13
ТЕКСТ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский