我正在尝试从我的 WPF 应用程序控制系统音量,但没有任何变化。我搜索了一些示例,并从以下位置找到了一个示例:PCVolumeControl。
如果我尝试GetVolume()
它会给我 0 到 100 之间的值。如果我使用SetVolume(80)
PC 声音不会改变。如果我再试一次,GetVolume()
它会返回 80。
我不确定这里有什么问题。根据网站,它可能不适用于 64 位,但我在那里没有看到明确的答案。
任何帮助表示赞赏。
我正在尝试从我的 WPF 应用程序控制系统音量,但没有任何变化。我搜索了一些示例,并从以下位置找到了一个示例:PCVolumeControl。
如果我尝试GetVolume()
它会给我 0 到 100 之间的值。如果我使用SetVolume(80)
PC 声音不会改变。如果我再试一次,GetVolume()
它会返回 80。
我不确定这里有什么问题。根据网站,它可能不适用于 64 位,但我在那里没有看到明确的答案。
任何帮助表示赞赏。
我snippet
从这个链接得到了以下内容,我tested
在我的本地系统中得到了它,它工作正常,但我不确定它是否适合WPF
。
问题标记:VB.NET
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
End Function
Const WM_APPCOMMAND As UInteger = &H319
Const APPCOMMAND_VOLUME_UP As UInteger = &HA
Const APPCOMMAND_VOLUME_DOWN As UInteger = &H9
Const APPCOMMAND_VOLUME_MUTE As UInteger = &H8
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SendMessage(Me.Handle, WM_APPCOMMAND, &H30292, APPCOMMAND_VOLUME_UP * &H10000)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SendMessage(Me.Handle, WM_APPCOMMAND, &H30292, APPCOMMAND_VOLUME_DOWN * &H10000)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SendMessage(Me.Handle, WM_APPCOMMAND, &H200EB0, APPCOMMAND_VOLUME_MUTE * &H10000)
End Sub
End Class
了解 MediaElement 属性。
以下是它的链接。
http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.volume.aspx
改变音量是这样的>>
<Slider Minimum="0" Maximum="1" ValueChanged="ValueChanged"/>
private void ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
media.Volume = e.NewValue;
}
希望它有帮助。