Author: Tomas Rutkauskas
How to turn off the master volume of a sound card
Answer:
1 unit WaveUnit;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Classes, Graphics, Controls,
7 Forms, Dialogs, MMSystem, StdCtrls;
8
9 type
10 TForm1 = class(TForm)
11 Button1: TButton;
12 Edit1: TEdit;
13 Edit2: TEdit;
14 Memo1: TMemo;
15 procedure Button1Click(Sender: TObject);
16 private
17 { Private declarations }
18 public
19 { Public declarations }
20 end;
21
22 var
23 Form1: TForm1;
24
25 implementation
26
27 {$R *.DFM}
28
29 procedure TForm1.Button1Click(Sender: TObject);
30 var
31 NumDevs: Integer;
32 waveCaps: TWaveOutCaps;
33 Volume: DWORD;
34 Left, Right: Word;
35 Version: Word;
36 begin
37 { We should have at least one device }
38 NumDevs := waveOutGetNumDevs;
39 Edit1.Text := Format('Number of devices is %d', [NumDevs]);
40 { for the 1st device (hard-coded) }
41 {Get Device Caps}
42 waveOutGetDevCaps(0, @waveCaps, SizeOf(waveCaps));
43 { Show device caps }
44 Memo1.Lines.Add('Device Caps: ' + waveCaps.szPName);
45 Version := waveCaps.vDriverVersion;
46 Memo1.Lines.Add(Format('Driver Version: %d.%d', [Hi(Version), Lo(Version)]));
47 case waveCaps.wChannels of
48 1: Memo1.Lines.Add('Left');
49 2: Memo1.Lines.Add('Right');
50 end;
51 { Standard formats }
52 if waveCaps.dwFormats and WAVE_FORMAT_1M08 <> 0 then
53 Memo1.Lines.Add('11.025 kHz, mono, 8-bit');
54 if waveCaps.dwFormats and WAVE_FORMAT_1M16 <> 0 then
55 Memo1.Lines.Add('11.025 kHz, mono, 16-bit');
56
57 {
58 WAVE_FORMAT_1S08 11.025 kHz, stereo, 8-bit
59 WAVE_FORMAT_1S16 11.025 kHz, stereo, 16-bit
60 WAVE_FORMAT_2M08 22.05 kHz, mono, 8-bit
61 WAVE_FORMAT_2M16 22.05 kHz, mono, 16-bit
62 WAVE_FORMAT_2S08 22.05 kHz, stereo, 8-bit
63 WAVE_FORMAT_2S16 22.05 kHz, stereo, 16-bit
64 WAVE_FORMAT_4M08 44.1 kHz, mono, 8-bit
65 WAVE_FORMAT_4M16 44.1 kHz, mono, 16-bit
66 WAVE_FORMAT_4S08 44.1 kHz, stereo, 8-bit
67 WAVE_FORMAT_4S16 44.1 kHz, stereo, 16-bit
68 }
69
70 { If Volume Control Supported }
71 if waveCaps.dwSupport and WAVECAPS_VOLUME <> 0 then
72 begin
73 waveOutGetVolume(0, @Volume);
74 Left := LoWord(Volume);
75 Right := HiWord(Volume);
76 { Show values of WAVE Device on volume control panel }
77 Edit2.Text := Format('Left : %d, Right : %d', [Left, Right]);
78 waveOutSetVolume(0, $40008000);
79 end;
80 end;
81
82 end.
|