永发信息网

vb在win7下获得录音设备名不全

答案:2  悬赏:0  手机版
解决时间 2021-01-27 18:14
  • 提问者网友:练爱
  • 2021-01-26 17:50
我的系统是win7,用vb访问声卡的录音设备名称,调用Winmm.dll下的waveInGetDevCaps,
得到录音设备的名称是 “线路输入 (Realtek High Definiti ”,但是实际上设备的名称应该是
“线路输入 (Realtek High Definition A ”,程序获得的名称少了几个字。
但是这段程序在 XP 下面运行是可以得到正确结果的,请问有人知道Win7下应该怎样做吗?
请给段VB的代码吧,谢谢!

以下是我之前的代码:
Public Declare Function waveInGetDevCaps Lib "Winmm.dll" Alias "waveInGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As Waveoutcaps, ByVal uSize As Long) As Long
Public Type Waveoutcaps
Wmid As Integer
Wpid As Integer
Vdrivervesion As Long
Szpname As String * 64
Dwformats As Long
Wchannels As Integer
Dwsupport As Long
End Type

Public Function getInputDevName() As String
Dim Conse As Long
Dim Returncaps As Waveoutcaps

Dim Pname As String * 64

Pname = "_ERROR_"

Conse = waveInGetDevCaps(0, Returncaps, Len(Returncaps))
If Conse = MMSYSERR_NOERROR Then
Pname = Left$(Returncaps.Szpname, InStr(Returncaps.Szpname, Chr$(0)) - 1)
‘ 在Win7 中,此处得到的名称会缺少几个字
End If

getInputDevName = Pname
End Function
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-01-26 18:22
Waveoutcaps类型中的 Szpname应该是32才对 名字太长所以会获取不完整的
自己读注册表吧
全部回答
  • 1楼网友:第四晚心情
  • 2021-01-26 20:01
什么年代了,,还用VB... 再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯