c# – 在Win 7上更改程序的音量

c# – 在Win 7上更改程序的音量,第1张

概述我想更改程序音量(而不是主音量).我现在有以下代码: DllImport("winmm.dll")]public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);[DllImport("winmm.dll")]public static extern int waveOutSetVolume(IntPtr 我想更改程序的音量(而不是主音量).我现在有以下代码:
Dllimport("winmm.dll")]public static extern int waveOutGetVolume(IntPtr hwo,out uint DWVolume);[Dllimport("winmm.dll")]public static extern int waveOutSetVolume(IntPtr hwo,uint DWVolume);private voID volumebar_Scroll(object sender,EventArgs e){    // Calculate the volume that's being set    int NewVolume = ((ushort.MaxValue / 10) * volumebar.Value);    // Set the same volume for both the left and the right channels    uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));    // Set the volume    waveOutSetVolume(IntPtr.Zero,NewVolumeAllChannels);}

这仅适用于Win XP,而不适用于windows 7(也可能不适用于Vista).我没有找到任何会在Win 7上实现相同的脚本,只是为了更改主卷(我不会追求).

解决方法 你的代码对我来说没问题(通过几个调整).这是在windows 7 x64上运行的非常简单的WPF测试应用程序的代码:

XAML

<Window x:Class="WpfApplication1.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        title="MainWindow" Height="350" WIDth="525">    <GrID>        <SlIDer Minimum="0" Maximum="10" ValueChanged="ValueChanged"/>    </GrID></Window>

C#

public partial class MainWindow{    public MainWindow()    {        InitializeComponent();    }    private voID ValueChanged(object sender,RoutedPropertyChangedEventArgs<double> e)    {        // Calculate the volume that's being set        double newVolume = ushort.MaxValue * e.NewValue / 10.0;        uint v = ((uint) newVolume) & 0xffff;        uint vAll = v | (v << 16);        // Set the volume        int retVal = NativeMethods.WaveOutSetVolume(IntPtr.Zero,vAll);        DeBUG.Writeline(retVal);        bool playRetVal = NativeMethods.PlaySound("tada.wav",IntPtr.Zero,0x2001);        DeBUG.Writeline(playRetVal);    }}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);}

当我启动应用程序并移动滑块时,“音量混合器”中会出现一个额外的音量控制,它与滑块同步地从最小值移动到最大值.

您应该检查waveOutSetVolume的返回值.如果您的代码仍无效,它可能会为您提供线索.

总结

以上是内存溢出为你收集整理的c# – 在Win 7上更改程序的音量全部内容,希望文章能够帮你解决c# – 在Win 7上更改程序的音量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存