2011-01-20 22 views
1

我需要控制vb.net中的主計算機卷。我搜索了網絡,並嘗試了所有我能找到的例子。這些都沒有工作。vb.net中的控制量

有沒有人有一些與vb.net 2010一起使用來控制音量的代碼片段?

感謝
giodamelio

回答

2

我找到了答案。其用途Nirsoft的的NirCmd32-bit64-bit

Public Class Sound 
    Dim nircmd As String 
    Const MAXVOL As Integer = 65535 

    Public Sub New(ByVal nircmd_location As String) 
     nircmd = nircmd_location 
    End Sub 

    Public Sub setVol(ByVal level As Integer) 

     Dim p As New ProcessStartInfo 
     p.FileName = nircmd 
     p.Arguments = "setsysvolume " & (MAXVOL * (level/100)).ToString 
     Process.Start(p) 

    End Sub 
End Class 

然後可以使用的財產以後像

Dim vol As New Sound(path_to_nircmd) 
vol.setVol(50) 
0

我知道這個問題是真的老了,但是這個工作對我來說:

http://www.dotnetcurry.com/showarticle.aspx?ID=431

Imports System 
Imports System.Windows.Forms 
Imports System.Runtime.InteropServices 

Namespace WindowsFormsApplication1 
    Partial Public Class Form1 
     Inherits Form 
     Private Const APPCOMMAND_VOLUME_MUTE As Integer = &H80000 
     Private Const APPCOMMAND_VOLUME_UP As Integer = &HA0000 
     Private Const APPCOMMAND_VOLUME_DOWN As Integer = &H90000 
     Private Const WM_APPCOMMAND As Integer = &H319 

     <DllImport("user32.dll")> _ 
     Public Shared Function SendMessageW(ByVal hWnd As IntPtr, _ 
       ByVal Msg As Integer, ByVal wParam As IntPtr, _ 
       ByVal lParam As IntPtr) As IntPtr 
     End Function 

     Private Sub btnMute_Click(ByVal sender As Object, ByVal e As EventArgs) 
      SendMessageW(Me.Handle, WM_APPCOMMAND, _ 
          Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE)) 
     End Sub 

     Private Sub btnDecVol_Click(ByVal sender As Object, ByVal e As EventArgs) 
      SendMessageW(Me.Handle, WM_APPCOMMAND, _ 
         Me.Handle, New IntPtr(APPCOMMAND_VOLUME_DOWN)) 
     End Sub 

     Private Sub btnIncVol_Click(ByVal sender As Object, ByVal e As EventArgs) 
      SendMessageW(Me.Handle, WM_APPCOMMAND, _ 
         Me.Handle, New IntPtr(APPCOMMAND_VOLUME_UP)) 
     End Sub 
    End Class 
End Namespace