J'ai finalement trouvé comment avoir ces valeurs, il s'agissait en fait des valeurs wMid et wPid que l'on obtient avec waveOutGetDevCap, il fallait seulement les convertir en hexadécimal. Toutefois, j'ai un autre problème étrange et ce n'est pas où est passé le texte de mon précédent post. Les informations obtenues par waveOutGetDevCap ne sont pas toujours les bonnes, j'utilise des casques USB avec carte audio intégrer donc, ils peuvent être débranchés et rebranchés en tous temps et le nom alors obtenu ne correspond plus avec celui donné par windows le tous confirmer par d'autre logiciel telle VLC, Evrest et la version C++ de mon code.
Exemple : J'ai trois cartes audio :
Logitech USB Headset (2) ($ffff,$ffff)
SigmaTel Audio ($1,$64)
Logitech USB Headset ($ffff,$ffff)
je débranche un casque USBet j'ai selon windows et les autres:
SigmaTel Audio ($1,$64)
Logitech USB Headset ($ffff,$ffff)
mais vb me dit:
Logitech USB Headset (2) ($ffff,$ffff)
SigmaTel Audio ($1,$64)
Je rebranche le casque et j'ai selon windows et les autres:
Logitech USB Headset (2) ($ffff,$ffff)
SigmaTel Audio ($1,$64)
Logitech USB Headset ($ffff,$ffff)
mais selon vb j'ai:
Logitech USB Headset (2) ($ffff,$ffff)
SigmaTel Audio ($1,$64)
Logitech USB Headset (3) ($ffff,$ffff)
comment expliquer cette différence et comment faire pour avoir les bonnes valeurs.
voici mon code vb:
Private Sub EcrireListeSortieAudio()
Dim CntDev As Long
Dim temp As WAVEOUTCAPS
Dim i As Integer
cboSortieAudio.Clear
CntDev = waveOutGetNumDevs
ReDim NameList(0) As String
If CntDev = 0 Then
Exit Sub
Else
ReDim NameList(CntDev) As String
For i = 0 To CntDev - 1
temp.szPname = ""
If waveOutGetDevCaps(i + 0, temp, Len(temp)) = 0 Then
'récupère le nom du périphérique
NameList(i) = Left$(temp.szPname, InStr(1, temp.szPname, Chr$(0), vbBinaryCompare) - 1) & " ($" & Hex(temp.wMid) & ",$" & Hex(temp.wPid) & ")"
cboSortieAudio.AddItem NameList(i)
End If
Next
End If
End Sub
Merci d'avance.