Пример #1
0
        private static bool KeyboardHook_OnKeyboardEvent(KeyAction Action, Keys Key)
        {
            switch (Key)
            {
            case Keys.VolumeMute:
                if (Action == KeyAction.WM_KEYUP)
                {
                    AudioSessionControl session = AudioSession_GetCurrentForeground();
                    AudioSession_MuteToggle(session);
                }
                return(true);

            case Keys.VolumeUp:

                if (Action == KeyAction.WM_KEYUP)
                {
                    AudioSessionControl session = AudioSession_GetCurrentForeground();
                    AudioSession_Increaser(session);
                }
                return(true);

            case Keys.VolumeDown:
                if (Action == KeyAction.WM_KEYUP)
                {
                    AudioSessionControl session = AudioSession_GetCurrentForeground();

                    AudioSession_Decreaser(session);
                }
                return(true);
            }

            //Console.WriteLine(Key);
            return(false);
        }
Пример #2
0
 private static bool AudioMatch_Session(AudioSessionControl session, object data)
 {
     if (session.PID != (uint)data)
     {
         return(true);
     }
     return(false);
 }
Пример #3
0
        private static bool AudioSession_MuteToggle(AudioSessionControl session)
        {
            if (session == null)
            {
                return(false);
            }

            bool Muted = !session.IsMute;

            session.SetMute(Muted);

            VolumeStatusWindow.Status = Muted ? VolumeDisplayForm.DisplayStatus.Muted : VolumeDisplayForm.DisplayStatus.Normal;
            VolumeStatusWindow.Toast();
            return(true);
        }
        public AudioSessionControl FindSession(IAudioSessionManager2 session_manager, AudioSessionProc matchsession_proc, object data)
        {
            AudioSessionControl     res         = null;
            IAudioSessionEnumerator sessionList = null;

            session_manager.GetSessionEnumerator(out sessionList);
            if (sessionList == null)
            {
                return(null);
            }

            int cnt = 0;

            sessionList.GetCount(out cnt);

            for (int index = 0; index < cnt; index++)
            {
                IAudioSessionControl session = null;
                sessionList.GetSession(index, out session);
                if (session == null)
                {
                    continue;
                }

                bool quit = false;
                AudioSessionControl control = null;
                try
                {
                    control = new AudioSessionControl(session);
                    quit    = (matchsession_proc(control, data) == false);
                    if (quit)
                    {
                        res = control;
                        break;
                    }
                    control.Dispose();
                    Marshal.Release(Marshal.GetIUnknownForObject(session));
                }
                catch { }
                {
                }
            }
            Marshal.Release(Marshal.GetIUnknownForObject(sessionList));
            GC.WaitForPendingFinalizers();
            return(res);
        }
Пример #5
0
        private static bool AudioSession_Decreaser(AudioSessionControl session)
        {
            if (session == null)
            {
                return(false);
            }
            float Value = session.CurrentVolume - 0.01f;

            if (Value < 0)
            {
                Value = 0;
            }
            session.SetVolume(Value);

            VolumeStatusWindow.Value = Value * 100f;
            VolumeStatusWindow.Toast();
            return(true);
        }