我的表单中有一个轨迹栏,其范围为1-100(用于音量)。我正在寻找一种将音频输出音量设置为我输入的值(例如,轨迹栏的值)的方法,但仅适用于我的应用程序。

在网路上找不到任何东西。

问候

最佳答案

private void trackBar1_ValueChanged(object sender, EventArgs e)
    {



        // Calculate the volume that's being set
        double newVolume = ushort.MaxValue * trackBar1.Value/ 10.0;

        uint v = ((uint) newVolume) & 0xffff;
        uint vAll = v | (v << 16);

        // Set the volume
        int retVal = NativeMethods.WaveOutSetVolume(IntPtr.Zero, vAll);



        bool playRetVal = NativeMethods.PlaySound("tada.wav", IntPtr.Zero, 0x2001);


    }
}

static class NativeMethods
{
    [DllImport("winmm.dll", EntryPoint = "waveOutSetVolume")]
    public static extern int WaveOutSetVolume(IntPtr hwo, uint dwVolume);

    [DllImport("winmm.dll", SetLastError = true)]
    public static extern bool PlaySound(string pszSound, IntPtr hmod, uint fdwSound);
}

这应该可以正常工作。我希望我不会错过任何东西。

关于c# - 处理量和跟踪栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32201941/

10-13 08:19