现在需要用软件控制声卡上的line out 输出 不知道谁有办法  谢谢(分不够可以加)

解决方案 »

  1.   

    一个测试声卡的Private Declare Function waveOutGetNumDevs Lib "Winmm.dll" () As Long
    Private Declare Function waveOutGetDevCaps Lib "Winmm.dll" Alias "waveOutGetDevCapsA" _
        (ByVal uDeviceID As Long, lpCaps As Waveoutcaps, ByVal uSize As Long) As Long
     
     Const Mb_OK = &H0
     Const Maxpnamelen = 32
     Const Wave_Format_1m08 = &H1
     Const Wave_Format_1m16 = &H4
     Const Wave_Format_1s08 = &H2
     Const Wave_Format_1s16 = &H8
     Const Wave_Format_2m08 = &H10
     Const Wave_Format_2m16 = &H40
     Const Wave_Format_2s08 = &H20
     Const Wave_Format_2s16 = &H80
     Const Wave_Format_4m08 = &H100
     Const Wave_Format_4m16 = &H400
     Const Wave_Format_4s08 = &H200
     Const Wave_Format_4s16 = &H800
     Const Wavecaps_Lrvolume = &H8
     Const Wavecaps_Pitch = &H1
     Const Wavecaps_Playbackrate = &H2
     Const Wavecaps_Sync = &H10
     Const Wavecaps_Volume = &H4Private Type Waveoutcaps
      Wmid As Integer
      Wpid As Integer
      Vdriverversion As Long
      Szpname As String * Maxpnamelen
      Dwformats As Long
      Wchannels As Integer
      Dwsupport As Long
    End Type
    Private Sub Command1_Click()       '测试声卡
      Dim wave1, wave2, Mainversion As String
      Dim Pname, Channel As String
      Dim wavinf, lesser As Long
      Dim Returncaps As Waveoutcaps
      Dim I As Integer
      Dim Y As Long
      Y = waveOutGetNumDevs()         
      If Y > 0 Then
         wavinf = waveOutGetDevCaps(0, Returncaps, Len(Returncaps)) '获取声卡信息
         If wavinf = 0 Then
            Mainversion = Returncaps.Vdriverversion \ 256
            lesser = Returncaps.Vdriverversion Mod 256
            Pname = Left$(Returncaps.Szpname, InStr(Returncaps.Szpname, Chr$(0)) - 1)
            Channel = Str$(Returncaps.Wchannels)
            Text1.Text = "产口名称" & Pname & vbCrLf
            Text1.Text = Text1.Text & "产品ID" & Returncaps.Wpid & vbCrLf
            Text1.Text = Text1.Text & "驱动程序I" & Returncaps.Wmid & vbCrLf
            Text1.Text = Text1.Text & "驱动程序版本º" & Mainversion & "." & lesser & vbCrLf
            Text1.Text = Text1.Text & "输出声道" & Channel & vbCrLf
            Text1.Text = Text1.Text & "支持格式版本" & vbCrLf
            Text1.Text = Text1.Text & "输出声道" & Channel & vbCrLf
            Text1.Text = Text1.Text & "扩展输出列表" & vbCrLf
            For I = 0 To 11
              If Returncaps.Dwformats And (2 ^ I) Then    '列举声卡支持格式
                  Select Case 2 ^ I
                    Case Wave_Format_1m08
                        wave1 = "11.025Khz,Mono,8bit,11Kb/Ps"
                    Case Wave_Format_1m16
                        wave1 = "11.025Khz,Mono,16bit,22Kb/Ps"
                    Case Wave_Format_1s08
                        wave1 = "11.025Khz,Stereo,8bit,22Kb/Ps"
                    Case Wave_Format_1s16
                        wave1 = "11.025Khz,Stereo,16bit,43Kb/Ps"
                    Case Wave_Format_2m08
                        wave1 = "22.05Khz,Mono,8bit,22Kb/Ps"
                    Case Wave_Format_2m16
                        wave1 = "22.05Khz,Mono,16bit,43Kb/Ps"
                    Case Wave_Format_2s08
                        wave1 = "22.05Khz,Stereo,8bit,43Kb/Ps"
                    Case Wave_Format_2s16
                        wave1 = "22.05Khz,Stereo,16bit,86Kb/Ps"
                    Case Wave_Format_4m08
                        wave1 = "44.1Khz,Mono,8bit,43Kb/Ps"
                    Case Wave_Format_4m16
                        wave1 = "44.1Khz,Mono,16bit,86Kb/Ps"
                    Case Wave_Format_4s08
                        wave1 = "44.1Khz,Stereo,8bit,86Kb/Ps"
                    Case Wave_Format_4s16
                        wave1 = "44.1Khz,Stereo,16bit,172Kb/Ps"
                  End Select
              
                 Text1.Text = Text1.Text & wave1 & vbCrLf
              End If
            Next I
            For I = 0 To 4
              If Returncaps.Dwsupport And (2 ^ I) Then  '列举声卡扩展功能
                     Select Case 2 ^ I
                        Case Wavecaps_Pitch
                            wave2 = "Support Pitch"
                        Case Wavecaps_Playbackrate
                            wave2 = "Support Playback"
                        Case Wavecaps_Volume
                            wave2 = "Support Volume Control"
                        Case Wavecaps_Lrvolume
                            wave2 = "Support Left-Right Channals"
                        Case Wavecaps_Sync
                            wave2 = "Support Synchronization"
                      End Select
                 Text1.Text = Text1.Text & wave2 & vbCrLf
               End If
            Next I
           End If
         Else
           Text1.Text = "你的计算机上无声卡设备"
      End If
    End SubPrivate Sub Command2_Click()
      End
    End Sub