Bonjour,

j'ai crée une nouvelle fonction dans MMDevApi.pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{ ==================================================================== }
Function Volume(Var Mute : Boolean ; Var Vol : Integer ) : Boolean ;
Var
  endpointVolume: IAudioEndpointVolume;
  VolumeLevel: Single;
  deviceEnumerator: IMMDeviceEnumerator;
  defaultDevice: IMMDevice;
begin
  Result := False ;
  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;
  Result := True ;
  endpointVolume.GetMasterVolumeLevelScaler(VolumeLevel);
  Vol := Round(VolumeLevel * 100) ;
  endpointVolume.GetMute(Mute)  ;
End ;  
{ ==================================================================== }
voici l'unité complète :

MMDevApi.zip

je l'utilise comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Uses MMDevApi
...
{ ========================================================================== }
procedure TForm1.Button1Click(Sender: TObject);
Var
  Mute : Boolean ;
  Vol : Integer ;
  Mess : String ;
begin
 If Volume(Mute, Vol) Then
    Begin
      Mess := 'Son On  -  Volume : ' ;
      If Mute Then  Mess := 'Son Off  -  Volume : ' ;
      ShowMessage(Mess+ IntToStr(Vol)+' %' );
    End
  Else
    ShowMessage('Erreur d''ouverture du média son') ;     
end;
{ ========================================================================== }
la fonction Volume fonctionne, le message s'affiche bienmais à la sortie de Button1Click j'ai un Acess Violation avec Read of Adress 0x00000000

Je ne comprends pas pourquoi ?

Merci de m'éclairer
A+
Charly