Bo tylko odgrywające aktualnie dźwięk pokażą się z możliwością regulacji głośności w mikserze pod Windows 7 z ikoną danej aplikacji.
Nie wiem dlaczego tamto nie działa ale nieprawda że aplikacja tylko podczas odtwarzania dźwięku znajduje się w mikserze bo można ją samemu dodać w dowolnym momencie:
var
DefaultDevice: IMMDevice;
DeviceEnumerator: IMMDeviceEnumerator;
SessionManager : IAudioSessionManager;
SessionControl : IAudioSessionControl;
SimpleAudio: ISimpleAudioVolume;
hr: Integer;
VolumeLevel: Single;
begin
VolumeLevel:= 0.5; //moze być od 0.0 do 1.0
hr:= CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator);
if Succeeded(hr) then
begin
hr:= DeviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, DefaultDevice);
if Succeeded(hr) then
begin
hr:= DefaultDevice.Activate(IID_IAudioSessionManager, CLSCTX_ALL, nil, IUnknown(SessionManager));
if Succeeded(hr) then
begin
hr:= SessionManager.GetAudioSessionControl(@GUID_NULL, 0, SessionControl);
if Succeeded(hr) then
begin
hr:= SessionControl.SetDisplayName('Test :)', nil);
if Succeeded(hr) then
begin
hr:= SessionControl.QueryInterface(IID_ISimpleAudioVolume, SimpleAudio);
if Succeeded(hr) then
begin
SimpleAudio.SetMasterVolume(VolumeLevel, nil);
SimpleAudio.GetMasterVolume(VolumeLevel);
Caption:= FloatToStr(VolumeLevel);
//SimpleAudio.SetMute(True, nil);
end;
end;
end;
end;
end;
end;
end;