Search code examples
c#windowsvisual-c++

Get the current system volume in Windows 7


How can I get the current master volume of the system in Windows 7?

I looked up in Google, but every solution returned values like -1 or 4686346 without a clear explanation of what they mean.


Solution

  • You're looking for the EndpointVolume API. This is part of the new audio APIs that were released in Windows Vista, and it can be used to get or set the master volume.

    This undertaking is made considerably easier by the fact that you do not need to support versions of Windows prior to Vista (namely Windows XP), because there were substantial changes made to the relevant infrastructure between those OS releases. This is likely the reason why the existing samples you've tried didn't work properly.

    There's a complete managed wrapper library available on CodeProject: Vista Core Audio API Master Volume Control. It probably implements more functionality than you need, but you can get an idea of what you need to do to determine the master system volume from your C# application.