2013-03-23 126 views
2

我试图从我的WPF应用程序控制系统音量,但没有任何更改。我搜索了一些例子,发现一个来自:PCVolumeControl更改系统音量

如果我尝试GetVolume()它给我0和100之间的值,如果我使用SetVolume(80) PC的声音不会改变。再次如果我尝试GetVolume()它返回80.

我不知道这里有什么问题。根据网站可能无法使用64位,但我没有看到明确的答案。

任何帮助表示赞赏。

回答

0

我从this链接得到以下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 
-1

了解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; 
} 

希望它有帮助。

+1

它似乎并不像你可以改变使用'MediaElement'电脑在全球的音量设置。 – 2013-03-23 05:02:12