Registriert seit: 3. Sep 2023
346 Beiträge
|
AW: Get/Set Master Volume Lautstärke?
16. Okt 2023, 09:20
Interesting !
Please try this
Code:
const
IID_IAudioEndpointVolumeEx: TGUID = '{66E11784-F695-4F28-A505-A7080081A78F}';
type
IAudioEndpointVolumeEx = interface(IAudioEndpointVolume)
[IID_IAudioEndpointVolumeEx]
function GetVolumeRangeChannel(nChannel: Integer; out pflVolumeMindB: double; out
pflVolumeMaxdB: double; out pflVolumeIncrementdB: double): HRESULT; stdcall;
end;
procedure TForm10.Button3Click(Sender: TObject);
begin
SetMasterMuteState(True);
end;
procedure TForm10.Button4Click(Sender: TObject);
begin
SetMasterMuteState(False);
end;
procedure TForm10.SetMasterMuteState(Muted: Boolean);
var
FAudioEndpointVolumeEx: IAudioEndpointVolumeEx;
FDeviceEnumerator: IMMDeviceEnumerator;
FMMDevice: IMMDevice;
R: System.HResult;
begin
if not Succeeded(CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER,
IID_IMMDeviceEnumerator, FDeviceEnumerator)) then
begin
OutputDebugString('TForm1.SetMasterVolumeLevelScalar: 1');
//CodeSite.Send('TForm1.SetMasterVolumeLevelScalar: 1');
ExitProcess(1);
end;
if not Succeeded(FDeviceEnumerator.GetDefaultAudioEndpoint(0, 0, FMMDevice)) then
begin
OutputDebugString('TForm1.SetMasterVolumeLevelScalar: 2');
//CodeSite.Send('TForm1.SetMasterVolumeLevelScalar: 2');
ExitProcess(1);
end;
if not Succeeded(FMMDevice.Activate(IID_IAudioEndpointVolumeEx, CLSCTX_INPROC_SERVER,
nil, IAudioEndpointVolume(FAudioEndpointVolumeEx))) then
begin
OutputDebugString('TForm1.SetMasterVolumeLevelScalar: 3');
//CodeSite.Send('TForm1.SetMasterVolumeLevelScalar: 3');
ExitProcess(1);
end;
if Assigned(FAudioEndpointVolumeEx) then
begin
R := FAudioEndpointVolumeEx.SetMute(Muted, nil);
case R of
S_OK:
OutputDebugString('TForm1.SetMasterVolumeMuteState: OK'); // successful operation with a return value of True
S_FALSE:
OutputDebugString('TForm1.SetMasterVolumeMuteState: FALSE'); // successful operation with a return value of False
E_NOINTERFACE:
OutputDebugString('TForm1.SetMasterVolumeMuteState: NOINTERFACE'); // Interface not supported
E_UNEXPECTED:
OutputDebugString('TForm1.SetMasterVolumeMuteState: UNEXPECTED'); // Catastrophic failure
E_NOTIMPL:
OutputDebugString('TForm1.SetMasterVolumeMuteState: NOTIMPL'); // Operation not implemented
else
OutputDebugString(PChar('TForm1.SetMasterVolumeMuteState: ELSE ' + IntToStr(R)));
end;
end
else
begin
OutputDebugString('TForm1.SetMasterVolumeLevelScalar: FAudioEndpointVolume not assigned!');
//CodeSite.Send('TForm1.SetMasterVolumeLevelScalar: FAudioEndpointVolume not assigned!');
end;
end;
Also did you try to run your application as Administrator ? , it could be some permission problem.
Kas
|
|
Zitat
|