c#控制音量大小CoreAudioApi

    xiaoxiao2021-12-14  19

    为了方便客户使用,在系统首页面用户可以设置系统音量,本来感觉应该很简单的事情,但是在网上搜索了大量的解决方法。在自己的电脑上都起不了作用。最多的还是调用微软的系统API. 代码基本上就是 第一种方式 测试了下 根本无法设置音量也无法获取当前音量大小 [DllImport("winmm.dll")] public static extern long waveOutSetVolume(UInt32 deviceID, UInt32 Volume); [DllImport("winmm.dll")] public static extern long waveOutGetVolume(UInt32 deviceID, out UInt32 Volume);

    第二种方式 可以设置音量增加或者减小 但是无法统当前音量 没找到对应的API

    /// <summary> /// 改变系统音量大小,增加 /// </summary> public void VolumeUp() { 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 VolumeDown() { 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); }

    最后从网上找到了另一种方式 通过CoreAudioApi 通过测试确实能用。

    CoreAudioApi.MMDeviceEnumerator devices = new MMDeviceEnumerator(); MMDevice device = devices.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); device.AudioEndpointVolume.MasterVolumeLevel = trackBar1.Value;//(直接设置音量 也可以调用方法设置音量增加减少) trackBar1.Value = (int)device.AudioEndpointVolume.MasterVolumeLevel;//(获取当前音量并且通过trackBar1显示) 希望各位提供自己更好的解决方式。
    转载请注明原文地址: https://ju.6miu.com/read-964644.html

    最新回复(0)