Wie kann ich auf den Mixer der Soundkarte zugreifen?
Hier ein komplettes Beispiel-Unit, das den Zugriff auf den Mixer der Soundkarte verdeutlicht:
unit cdp_dlg9;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, Grids, MMSystem;
type
TMixerDlg = class(TForm)
PanelMain: TPanel;
AnzNumDevs: TLabel;
Label1: TLabel;
Grid: TStringGrid;
PanelBottom: TPanel;
BtnOK: TBitBtn;
BtnClose: TBitBtn;
BtnHelp: TBitBtn;
Timer: TTimer;
procedure FormShow(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure BtnHelpClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
NumDevs : byte;
end;
var
MixerDlg: TMixerDlg;
implementation
{$R *.DFM}
procedure GetVolume(DeviceID : integer;var VolL,VolR : word);
var Vol : longint;
begin
AuxGetVolume(DeviceID,@Vol);
VolL:=Vol mod $10000;
VolR:=Vol shr 16;
end;
procedure SetVolume(DeviceID : integer;VolL,VolR : byte);
var Vol : longint;
Temp : real;
begin
Temp:=VolR/255;
Vol:=round($FFFF*Temp) shl 16;
Temp:=VolL/255;
Vol:=Vol+round($FFFF*Temp);
AuxSetVolume(DeviceID,Vol);
end;
procedure GetDevInfos;
var AuxCaps : TAuxCaps;
VHi,VLo : word;
i : byte;
begin
for i:=0 to MixerDlg.NumDevs-1 do begin
AuxGetDevCaps(i, @AuxCaps, SizeOf(AuxCaps));
MixerDlg.Grid.Cells[0,i+1]:=IntToStr(i);
VLo:=AuxCaps.vDriverVersion mod $100;
VHi:=AuxCaps.vDriverVersion div $100;
MixerDlg.Grid.Cells[1,i+1]:=IntToStr(VHi)+'.'+IntToStr(VLo);
MixerDlg.Grid.Cells[2,i+1]:=String(AuxCaps.szPName);
if (AuxCaps.wTechnology and AUXCAPS_CDAUDIO)<><>0 then
MixerDlg.Grid.Cells[3,i+1]:='CD-Audio'
else
MixerDlg.Grid.Cells[3,i+1]:='Extern';
end;
end;
procedure TMixerDlg.TimerTimer(Sender: TObject);
var L,R : word;
i : byte;
begin
for i:=0 to NumDevs-1 do begin
GetVolume(i,L,R);
Grid.Cells[4,i+1]:=IntToStr(L)+' %';
Grid.Cells[5,i+1]:=IntToStr(R)+' %';
end;
end;
procedure TMixerDlg.FormShow(Sender: TObject);
var i : byte;
begin
NumDevs:=AuxGetNumDevs;
AnzNumDevs.Caption:=IntToStr(NumDevs);
Grid.RowCount:=NumDevs+1;
Grid.Cells[0,0]:='ID';
Grid.Cells[1,0]:='Vers.';
Grid.Cells[2,0]:='Name';
Grid.Cells[3,0]:='Typ';
Grid.Cells[4,0]:='Pegel L';
Grid.Cells[5,0]:='Pegel R';
GetDevInfos;
end;
end.
| Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
| nicht getestet | Version nicht betroffen | getestet |
siehe auch:
Wie kann ich ermittlen, ob eine Soundkarte vorhanden ist?