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); }
private static bool AudioMatch_Session(AudioSessionControl session, object data) { if (session.PID != (uint)data) { return(true); } return(false); }
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); }
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); }