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?