Delphi - Hang kimeneti eszközök lekérdezése

forráskód letöltése
Készítünk egy komponenst, amely segítségével lekérdezhetjük számítógépünk rendelkezésre álló hang kimeneti eszközeit.
A mellékelt példaprogram megnyitása előtt a WaveOutDevices.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A rendelkezésre álló eszközöket a komponens GetDevices metódusával kérdezhetjük le.
procedure GetDevices(List: TStrings);
A komponens az eredményt a List paraméterben megadott TStrings objektumban helyezi el.
Komponensünket a TComponent osztályból származtatjuk.
A hang eszközök lekérdezéséhez az MMSystem unitban található waveOutGetNumDevs és WaveOutGetDevCaps függvényeket használjuk fel.
A rendelkezésre álló eszközök számát a waveOutGetNumDevs függvénnyel kérdezhetjük le.
DeviceNumber:=waveOutGetNumDevs;
Miután lekérdeztük a rendelkezésre álló eszközök számát, egy for ciklus segítségével beolvashatjuk azok adatait.
for i:=0 to DeviceNumber-1 do begin
  WaveOutGetDevCaps(i,@Caps,SizeOf(TWaveOutCapsA));
waveOutGetDevCapsA
function waveOutGetDevCapsA(
uDeviceID: UINT;
lpCaps: PWaveOutCapsA;
uSize: UINT
): MMRESULT;
Wave kimenetű hangeszközök kapacitásának lekérdezésére szolgál.
Paraméterek
uDeviceID: UINT
A hangeszköz azonosítója.
lpCaps: PWaveOutCapsA
Egy mutató, amely egy WAVEOUTCAPS struktúrára mutat. A lekérdezés eredménye ebbe a struktúrába kerül.
uSize: UINT
A WAVEOUTCAPS struktúra mérete, bájtokban.
Visszatérési érték
MMSYSERR_NOERROR, ha a lekérdezés sikeresen lezajlott. Ha valami hiba történt, akkor a visszatérési érték a hiba kódja.
A TWaveOutCapsA struktúra
TWAVEOUTCAPSA = record
  wMid: Word;
A gyártó azonosítója.
  wPid: Word;
A termék azonosítója.
  vDriverVersion: MMVERSION;
A meghajtó vezérlő program verziója.
  szPname: array[0..MAXPNAMELEN-1] of AnsiChar;
A termék neve.
  dwFormats: DWORD;
Az eszköz által támogatott formátumok. Használható konstansok:
Konstans Formátum
WAVE_FORMAT_1M08 11.025 kHz, mono, 8-bit
WAVE_FORMAT_1M16 11.025 kHz, mono, 16-bit
WAVE_FORMAT_1S08 11.025 kHz, stereo, 8-bit
WAVE_FORMAT_1S16 11.025 kHz, stereo, 16-bit
WAVE_FORMAT_2M08 22.05 kHz, mono, 8-bit
WAVE_FORMAT_2M16 22.05 kHz, mono, 16-bit
WAVE_FORMAT_2S08 22.05 kHz, stereo, 8-bit
WAVE_FORMAT_2S16 22.05 kHz, stereo, 16-bit
WAVE_FORMAT_4M08 44.1 kHz, mono, 8-bit
WAVE_FORMAT_4M16 44.1 kHz, mono, 16-bit
WAVE_FORMAT_4S08 44.1 kHz, stereo, 8-bit
WAVE_FORMAT_4S16 44.1 kHz, stereo, 16-bit
  wChannels: Word;
Csatornák száma. 1 – mono, 2 – sztereo.
  dwSupport: DWORD;
Az eszköz által nyújtott szolgáltatások. Használható konstansok: WAVECAPS_LRVOLUME, WAVECAPS_PITCH, WAVECAPS_PLAYBACKRATE, WAVECAPS_SYNC, WAVECAPS_VOLUME, WAVECAPS_SAMPLEACCURATE.
end;