2

我知道这个话题之前已经在这里讨论过,但我仍然无法让它发挥作用。我只需要使用 win 7 SDK 获取我机器中的当前音量(我将从那里开始,我想扩展我的项目的功能会更容易),而不使用像这样的已发布项目的代码。我应该为我的项目添加一个特定的引用吗?使用dllimport?任何帮助,将不胜感激

4

2 回答 2

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

但是我发现的最好的代码总是返回到你在问题中给出的链接。祝你好运!

--编辑2--

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

于 2012-06-05T19:32:25.850 回答
0

使用核心音频 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;
        }
}
于 2016-02-26T19:43:07.217 回答