![]() ![]() Set default audio device volume (0-100) dioRenderClient = (IAudioRenderClient)ppv Iid = new Guid(Constants.IID_IAudioRenderClient) (AUDCLNT_SHAREMODE.AUDCLNT_SHAREMODE_SHARED, (uint)AUDCLNT_STREAMFLAGS.AUDCLNT_STREAMFLAGS_EVENTCALLBACK, 0, 0, defaultFormat, ref g) This.UpdateWaveFormatInfo(defaultFormat) Guid iid = new Guid(Constants.IID_IAudioClient) ĭefaultDevice.Activate(ref iid, CLSCTX.CLSCTX_ALL, ref propVar, out obj) PropertyKey pkey = PKEY.PKEY_DeviceInterface_FriendlyName ĭebug.WriteLine("Using audio device ''", pv.Value) IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)deviceEnumeratorClass ĭeviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out defaultDevice) ĭefaultDevice.OpenPropertyStore(STGM.STGM_READ, out store) MMDeviceEnumerator deviceEnumeratorClass = new MMDeviceEnumerator() Marshal.ReleaseComObject(deviceEnumerator) Marshal.ReleaseComObject(sessionEnumerator) VolumeControl = ctl as ISimpleAudioVolume Var processName = Process.GetProcessById(cpid).ProcessName SessionEnumerator.GetSession(i, out ctl) NOTE: we could also use the process id instead of the app name (with IAudioSessionControl2) search for an audio session with the required name ![]() IAudioSessionEnumerator sessionEnumerator ![]() IAudioSessionManager2 mgr = (IAudioSessionManager2)o Speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out o) Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID ![]() IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator()) ĭeviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers) get the speakers (1st render + multimedia) device Private static ISimpleAudioVolume GetVolumeObject(int pid) Throw new Exception("COM cast failed to IAudioEndpointVolume") IAudioEndpoint = oEndPoint as IAudioEndpointVolume Throw new Exception("IMMDevice.Activate()") RetVal = imd.Activate(ref iid, dwClsCtx, pActivationParams, ref pEndPoint) Throw new Exception("COM cast failed to IMMDevice") ODevice = .GetObjectForIUnknown(pDevice) Throw new Exception("IMMDeviceEnumerator.EnumAudioEndpoints()") RetVal = iMde.EnumAudioEndpoints(EDataFlow.eRender, dwStateMask, ref pCollection) Int dwStateMask = DEVICE_STATE_ACTIVE | DEVICE_STATE_NOTPRESENT | DEVICE_STATE_UNPLUGGED Throw new Exception("IMMDeviceEnumerator.GetDefaultAudioEndpoint()") Int retVal = iMde.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eConsole, ref pDevice) Throw new Exception("COM cast failed to IMMDeviceEnumerator") IMde = oEnumerator as IMMDeviceEnumerator Throw new Exception("CoCreateInstance() pInvoke failed") Uint hResult = CoCreateInstance(ref clsid, null, CLSCTX_INPROC_SERVER, ref IID_IUnknown, out oEnumerator) IAudioEndpointVolume audioEndPointVolume = (IAudioEndpointVolume)deviceActivated ĪudioEndPointVolume.GetMasterVolumeLevelScalar(out float volumeLevelCurrentFloat) įloat volumeLevelFloat = volumeLevelCurrentFloat + (targetStep / 100F) ĪudioEndPointVolume.SetMasterVolumeLevelScalar(volumeLevelFloat, Guid.Empty) ĭebug.WriteLine("Up volume: " + targetStep + "% / " + volumeLevelFloat) ĭebug.WriteLine("Failed to up default audio device volume.") IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator() ĭeviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia) ĭeviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia) ĭeviceItem.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out object deviceActivated) Public static bool AudioVolumeUp(int targetStep, bool inputDevice) ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |