Einzelnen Beitrag anzeigen

Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

Probleme mit MmSystem Funktionen für die Soundkarte...

  Alt 19. Mär 2017, 10:43
Hallo,

ich versuche seit Tagen mit Informationen zu den Ausgabegeräten klar zu kommen.
Leider gelingt mir das nicht da die Beispielfunktionen aus dem Internet nicht ganz so funktionieren wie beschrieben.

Nehmen wir die erste...

Delphi-Quellcode:
procedure GetWaveOutDevicesInfo(DeviceNames: TStrings);
var
  DNum: Integer;
  i: Integer;
  Caps: TWaveOutCaps;

begin
  DNum := waveOutGetNumDevs; // Number of Devices
  for i := 0 to DNum - 1 do // Query Devicenames
  begin
    waveOutGetDevCaps(i, @Caps, SizeOf(TWaveOutCaps));
    DeviceNames.Add(Format('Device %d/%d information follows...', [i,DNum-1] ));
    DeviceNames.Add(string(Caps.szPname));
  end;
end;
Hier bekomme ich nicht den vollständigen NAmen der Karte sondern nur:
'Lautsprecher (2- Realtek High D'

komplett wäre:
'Lautsprecher (2- Realtek High Definition Audio)'

Das zweite Beispiel soll die eingestellte Lautstärke auslesen.

Delphi-Quellcode:
function GetWaveVolume(uDeviceId:Cardinal; var wLVol: Word; var wRVol: Word): Boolean;
var
  WaveOutCaps: TWaveOutCaps;
  Volume: dword;
begin
  Result := False;
  if WaveOutGetDevCaps(uDeviceId, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
  if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then begin
    Result := WaveOutGetVolume(uDeviceId, @Volume) = MMSYSERR_NOERROR;
    wLVol := HiWord(volume);
    wRVol := LoWord(volume);
  end;
end;
Als Antwort bekomme ich immer wLvol=65535 und wRvol=65535. Wenn ich eine andere DeviceId übergebe als Geräte die verfügbar sind bekomme ich aber FALSE zurück. Deutet irgendwie darauf hin das der Aufruf WaveOutGetVolume schon funktioniert, die Antwort aber in Volume nicht richtig zurück kommt.

Was mache ich in beiden Fällen falsch? Wenn es an den Delphi gekapselten Funktionen liegt, kann man irgendwie die originalen API Aufrufe selber direkt verwenden?

Vielen Dank für Eure Hilfe!

Gruß Frank
Frank
  Mit Zitat antworten Zitat