Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Systemlautstärke ändern

  Alt 13. Jun 2011, 23:34
Habe doch noch ein kleines Problem damit.
Zwar geht mit der MMDevApi-Methode das Einstellen der Lautstärke und Stummschaltung problemlos, und auch das Auslesen der Lautstärke klappt, jedoch erhalte ich beim Auslesen der Stummschaltung eine Zugriffsverletzung und ich habe keine Ahnung, woran das liegen könnte.

Im Prinzip ist die Funktion fast genau so wie beim Auslesen der Lautstärke (was ja klappt):
Delphi-Quellcode:
function GetMuteVista : Boolean;
var
  mute : Boolean;
  deviceEnumerator: IMMDeviceEnumerator;
  defaultDevice: IMMDevice;
  endpointVolume: IAudioEndpointVolume;
begin
  endpointVolume := nil;

  CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator);
  deviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, defaultDevice);
  defaultDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, endpointVolume);

  if endpointVolume = nil then Exit;

  endpointVolume.GetMute(mute);
  Result := mute;
end;
Die Funktion läuft auch problemlos durch und auch der Resultwert wird korrekt gesetzt. Allerdings erfolgt anschließend dennoch eine Zugriffsverletzung. Woran könnte das denn liegen? Muss noch etwas freigegeben werden? Mir sind diese ActiveX-Geschichten eh immer ein Rätsel...
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat