Bonjour,
j'ai crée une nouvelle fonction dans MMDevApi.pas :
voici l'unité complète :
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 ; { ==================================================================== }
MMDevApi.zip
je l'utilise comme ceci :
la fonction Volume fonctionne, le message s'affiche bienmais à la sortie de Button1Click j'ai un Acess Violation avec Read of Adress 0x00000000
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; { ========================================================================== }
Je ne comprends pas pourquoi ?
Merci de m'éclairer
A+
Charly
Partager