Windows 7中的音量控制c#

时间:2012-06-05 19:27:56

标签: c# windows-7 sdk volume

我知道此主题已在此处讨论,但我仍然无法使其工作。 我只需要在我的机器中获取当前音量(我将从那里开始,我想在扩展我的项目功能之后会更容易)使用win 7 SDK并且不使用已发布项目的代码,例如this。我应该为我的项目添加特定的引用吗?用dllimport? 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

也许这个:http://msdn.microsoft.com/en-us/library/ms679138%28VS.85%29.aspx(ISimpleAudioVolume界面)

- 编辑 -

此项目似乎包含您要搜索的内容。

http://hintdesk.com/Web/Source/Adjust%20System%20Volume.zip

如果没有,你可以去看看Get Master Sound Volume in c#

或此处:http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/05dc2d35-1d45-4837-8e16-562ee919da85

但我发现的关于此问题的最佳代码始终会返回到您在问题中提供的链接。祝你好运!

- Edit2--

或者您可以借助以下方法使用FMOD(c ++):Using FMOD for C#?
而这:http://sourceforge.net/projects/fmodnet/

答案 1 :(得分:0)

使用Core Audio API,您可以使用以下类来获取和设置默认音频端点的音量以进行播放。

using CoreAudioApi;

public class SystemVolumeConfigurator
{
        private readonly MMDeviceEnumerator _deviceEnumerator = new MMDeviceEnumerator();
        private readonly MMDevice _playbackDevice;

        public SystemVolumeConfigurator()
        {
            _playbackDevice = _deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
        }

        public int GetVolume()
        {
            return (int)(_playbackDevice.AudioEndpointVolume.MasterVolumeLevelScalar * 100);
        }

        public void SetVolume(int volumeLevel)
        {
            if (volumeLevel < 0 || volumeLevel > 100)
                throw new ArgumentException("Volume must be between 0 and 100!");

            _playbackDevice.AudioEndpointVolume.MasterVolumeLevelScalar = volumeLevel / 100.0f;
        }
}