AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Probleme mit MmSystem Funktionen für die Soundkarte...
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Schucki · begonnen am 19. Mär 2017 · letzter Beitrag vom 20. Mär 2017
 
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, 09: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz