Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# waveOutGetVolume()始终返回4294967295(最大值)_C#_Windows_Winapi_Volume - Fatal编程技术网

C# waveOutGetVolume()始终返回4294967295(最大值)

C# waveOutGetVolume()始终返回4294967295(最大值),c#,windows,winapi,volume,C#,Windows,Winapi,Volume,请帮助,为什么函数总是返回最大值4294967295,尽管系统中的音量发生了变化?我做错了什么 我的系统是Windows XP SP3 x86 class Program { [DllImport("winmm.dll")] private static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume); static void Main(string[] args) { uin

请帮助,为什么函数总是返回最大值4294967295,尽管系统中的音量发生了变化?我做错了什么

我的系统是Windows XP SP3 x86

class Program
{
    [DllImport("winmm.dll")]
    private static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);

    static void Main(string[] args)
    {
        uint currVol;
        int result = waveOutGetVolume(IntPtr.Zero, out currVol);
        if (result != 0)
        {
            Console.WriteLine("Some error occured...");
            Console.ReadKey();
        }
        Console.WriteLine("currVol = {0}", currVol); //always = 4294967295
        ushort left_channel_volume = (ushort)(currVol & 0xffff);
        Console.WriteLine("left_channel_volume = {0}", left_channel_volume); //always = 65535
        Console.ReadKey();
    }
}

谢谢大家的回答。我没有收到正确的答案。我自己已经找到了这种行为的原因。结果,问题完全不同了

这些功能不会直接影响硬件设置。此外,这与特定于进程的音频会话相关,因此更改会影响调用应用程序,但不会影响其他应用程序

检查其正确性可以是这样的:

  • 为每个/主设备调用waveOutSetVolume(0,0x0)
  • 调用waveOutGetVolume并获得正确的结果,而在系统中,混音器音量图标将显示在带有音量控制的应用程序中

  • 您确定
    hwo
    是可选的吗?文档中并没有指出这种情况,正如Alex K.所指出的,在hmo中,您肯定必须使用除0之外的其他内容,这是通过waveOutOpen函数获得的句柄。Alex K.,是的。我很确定,因为第一个参数表示音频设备的数量。我只有一个,所以第一个参数是零。我还看了很多在互联网上使用这个函数的例子,这里的任何地方都经常超过零。但是我不明白为什么这个函数对我不起作用…MichaelWalz,如果您演示一个如何执行它的示例,我将非常感激?
    waveOutGetVolume()
    接受打开的设备句柄或设备ID作为输入。如果存在至少1个音频设备,则设备ID 0对输入有效。