예제 #1
0
            private static Win7ComInterface.IAudioEndpointVolume GetAudioEndPointVolume()
            {
                Win7ComInterface.IAudioEndpointVolume result = null;
                InvokeTryCatch("Win7VolumeOperate.GetAudioEndPointVolume", () =>
                {
                    Win7ComInterface.IMMDevice device = Device;
                    if (device == null)
                    {
                        return;
                    }

                    const uint CLSCTX_ALL = 23u;

                    object comEndPointVol;
                    Guid IID_IAudioEndpointVolume = typeof(Win7ComInterface.IAudioEndpointVolume).GUID;
                    Marshal.ThrowExceptionForHR(device.Activate(ref IID_IAudioEndpointVolume, CLSCTX_ALL, IntPtr.Zero, out comEndPointVol));
                    Win7ComInterface.IAudioEndpointVolume endPointVol = comEndPointVol as Win7ComInterface.IAudioEndpointVolume;

                    if (endPointVol == null)
                    {
                        throw new Exception("初始化 Win7以上操作系统的 音频Com IAudioEndpointVolume 组件失败!");
                    }

                    uint HardwareSupp;
                    Marshal.ThrowExceptionForHR(endPointVol.QueryHardwareSupport(out HardwareSupp));

                    result = endPointVol;
                });
                return(result);
            }
예제 #2
0
 private static void SetEndPointVolumeMasterVolumeLevelScalar(float value)
 {
     InvokeTryCatch("Win7VolumeOperate.SetEndPointVolumeMasterVolumeLevelScalar", () =>
     {
         Win7ComInterface.IAudioEndpointVolume endPointVolume = EndPointVolume;
         if (endPointVolume == null)
         {
             return;
         }
         Marshal.ThrowExceptionForHR(endPointVolume.SetMasterVolumeLevelScalar(value, Guid.Empty));
     });
 }
예제 #3
0
            private static float GetEndPointVolumeMasterVolumeLevelScalar()
            {
                float result = 0;

                InvokeTryCatch("Win7VolumeOperate.GetEndPointVolumeMasterVolumeLevelScalar", () =>
                {
                    Win7ComInterface.IAudioEndpointVolume endPointVolume = EndPointVolume;
                    if (endPointVolume == null)
                    {
                        return;
                    }

                    float temp;
                    Marshal.ThrowExceptionForHR(endPointVolume.GetMasterVolumeLevelScalar(out temp));
                    result = temp;
                });
                return(result);
            }
예제 #4
0
            private static bool GetEndPointVolumeMute()
            {
                bool result = false;

                InvokeTryCatch("Win7VolumeOperate.GetEndPointVolumeMute", () =>
                {
                    Win7ComInterface.IAudioEndpointVolume endPointVolume = EndPointVolume;
                    if (endPointVolume == null)
                    {
                        return;
                    }

                    bool temp;
                    Marshal.ThrowExceptionForHR(endPointVolume.GetMute(out temp));
                    result = temp;
                });
                return(result);
            }