DCS/ruiyiweiUX/Assets/GeneralTools/Scripts/Always/SoundManager.cs

61 lines
2.3 KiB
C#

using UnityEngine;
#if UNITY_STANDALONE_WIN
using System.Runtime.InteropServices;
#endif
using System;
namespace GeneralTools
{
public class SoundManager : SingletonBaseAttribute<SoundManager>
{
#if UNITY_STANDALONE_WIN
public override void IStart()
{
base.IStart();
KeyDownManager.Instance.AddKeyDownAction(KeyCode.PageUp, () => { SystemVolumeUp(); }, "增加系统音量", false, 0);
KeyDownManager.Instance.AddKeyDownAction(KeyCode.PageDown, () => { SystemVolumeDown(); }, "降低系统音量", false, 0);
KeyDownManager.Instance.AddKeyDownAction(KeyCode.Pause, () => { SystemMute(); }, "静音/恢复系统音量", false, 0);
}
#region System
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
[DllImport("user32.dll")]
static extern byte MapVirtualKey(uint uCode, uint uMapType);
private const byte VK_VOLUME_MUTE = 0xAD;
private const byte VK_VOLUME_DOWN = 0xAE;
private const byte VK_VOLUME_UP = 0xAF;
private const uint KEYEVENTF_EXTENDEDKEY = 0x0001;
private const uint KEYEVENTF_KEYUP = 0x0002;
/// <summary>
/// 改变系统音量大小,增加
/// </summary>
public void SystemVolumeUp()
{
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
/// <summary>
/// 改变系统音量大小,减小
/// </summary>
public void SystemVolumeDown()
{
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
/// <summary>
/// 改变系统音量大小,静音
/// </summary>
public void SystemMute()
{
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
#endregion
#endif
}
}