AntoAnto ha scritto:
Vero, avevo dimenticato di aggiungere le tre sub,
Private Function HiByte(ByVal wParam As Integer) As Byte
HiByte = (wParam And &HFF00&) \ (&H100)
End Function
Private Function LoByte(ByVal wParam As Integer) As Byte
LoByte = wParam And &HFF&
End Function
Private Function TrimNulls(sString As String) As String
TrimNulls = Left(sString, InStr(1, sString, Chr(0)) - 1)
End Function
Ed ecco il codice da VB6 a VB.Net completo delle tre sub, che come avevo supposto, sono inutili nel tuo caso:
Public Class Form1
' PER SCELTA SOUND BLASTER
Private Const CALLBACK_WINDOW As Integer = &H10000
Private Const MAXPNAMELEN As Integer = 32
Private Structure MIXERCAPS
Dim wMid As Short
Dim wPid As Short
Dim vDriverVersion As Integer
<VBFixedString(MAXPNAMELEN), Runtime.InteropServices.MarshalAs(Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=MAXPNAMELEN)> Public szPname() As Char
Dim fdwSupport As Integer
Dim cDestinations As Integer
End Structure
Private Declare Function mixerGetNumDevs Lib "winmm.dll" () As Integer
Private Declare Function mixerOpen Lib "winmm.dll" (ByRef phmx As Integer, ByVal uMxId As Integer, ByVal dwCallback As Integer, ByVal dwInstance As Integer, ByVal fdwOpen As Integer) As Integer
Private Declare Function mixerGetDevCaps Lib "winmm.dll" Alias "mixerGetDevCapsA" (ByVal uMxId As Integer, ByRef pmxcaps As MIXERCAPS, ByVal cbmxcaps As Integer) As Integer
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
_Main()
End Sub
'SCELTA della SOUND BLASTER AUDIO CARD - DA CODICE VB6
Sub _Main()
Dim MMSYSERR_NOERROR, m_DeviceID, m_hMixer, m_Destinations, lRtn, lLoop, lMixerCnt As Integer
Dim s, m_ProductName, m_DriverVersion As String
Dim m_ProductID, m_ManufacturerID As Short
Dim lMixer As Long
Dim mc As MIXERCAPS = New MIXERCAPS
On Error Resume Next
lMixerCnt = mixerGetNumDevs
If lMixerCnt Then
s = ""
For lLoop = 0 To lMixerCnt - 1
lRtn = mixerOpen(lMixer, lLoop, Handle.ToInt32, 0, CALLBACK_WINDOW)
If lRtn = 0 Then
lRtn = mixerGetDevCaps(lMixer, mc, Len(mc))
If lRtn = MMSYSERR_NOERROR Then
With mc
m_Destinations = .cDestinations
m_DeviceID = lLoop
m_DriverVersion = Convert.ToString(HiByte(mc.vDriverVersion) & "." & LoByte(mc.vDriverVersion))
m_hMixer = lMixer
m_ManufacturerID = .wMid
m_ProductID = .wPid
m_ProductName = TrimNulls(mc.szPname)
End With
s = s & m_DeviceID & ") - " & m_ProductName & vbCrLf
If Val(m_DeviceID) < 7 Then ComboBox1.Items.Add(m_DeviceID & " - " & m_ProductName)
End If
End If
Next lLoop
End If
End Sub
Private Function HiByte(ByVal wParam As Integer) As Byte
HiByte = (wParam And &HFF00&) \ (&H100)
End Function
Private Function LoByte(ByVal wParam As Integer) As Byte
LoByte = wParam And &HFF&
End Function
Private Function TrimNulls(sString As String) As String
TrimNulls = sString.Replace(Chr(0), "")
End Function
End Class
AntoAnto ha scritto:
Mi scuso per l'incapaità, ma non ho capito bene come usare i tuoi 2 esempi in vbnet e come/dove inserirli...
Se non hai capito come usarli, significa che non riuscirai a fare quello che vuoi fare, ma questo non mi impedisce di risponderti.
1 ) apri VisualStudio
2 ) scegli: Crea un nuovo progetto... (è in basso, scritto piccolo)
3 ) nella finestra nuovo progetto scegli:
Visual Basic, Windows Desktop, App Windows Form (.Net Framework)
metti anche il nome, il percorso e il Framework che vuoi usare.
4 ) clicca
Ok... (si aprirà un progetto nuovo che mostra un form vuoto)
5 ) dalla
Casella degli strumenenti (se non la vedi Ctrl+Alt+x) clicca due volte su Combobox e posizionalo e aggiustalo nel Form
6 )
F7 (per passate al codice)
7 ) Torna al forum e seleziona tutto il codice che ho postato qui sopra con (CODICE: SELEZIONA TUTTO) e copialo (Ctrl+c)
8 ) Torna a VisualStudio e incolla (Ctrl+v) nella pagina del codice, sovrascrivendo qualsiasi cosa già c'è
9 )
F5 (il programma parte e se clicchi la freccetta del combobox devi vedere le periferiche audio)
Per l'altro programma che ti ho postato, rileggi le info sintetiche, che ora ti dovrebbero essere chiare.