Sono un appassionato cultore di programmazione a livello amatoriale, ma devo ancora fare moltissima strada...
Sono arrivato faticosamente a "decifrare" le API della serie "waveIn", ma adesso mi trovo di fronte a un problema che mi sta facendo diventare mattoa proposito della funzione waveInStart in VB6. Dopo averla usata ottengo sempre un crash, sia in Vista sia in XP, sia in Win98, per cui credo che il problema sia in qualche mio errore, e non in qualcosa relativo al sistema operativo usato.
Sul notebook con XP ottengo l'apertura di Visual C++ per il debugging, e qui mi appare una messageBox con scritto "Violazione di accesso..." seguita da un numero a 32 bit, mentre sul notebook con Vista il programma si "pianta" solamente, la finestra si opaca e quindi appare una finestra con scritto "il programma ha smesso di funzionare".
Il codice è:
<pre>
Dim Caps As WAVEINCAPS
Dim format As WAVEFORMATEX
Dim Wave As WAVEHDR
Const DEVICEID = 0
Dim hWaveIn As Long
Dim rc As Long
Dim Buffer(0 To 511) As Byte
....qui vi sono tutte le strutture, le costanti, le dichiarazioni delle funzioni API...
Private Sub Command1_Click()
rc = waveInStart(hWaveIn)
Debug.Print "Codice di errore di waveInStart: " & rc
Sleep (10000)
MsgBox "finito"
End Sub
Private Sub Form_Load()
rc = waveInGetDevCaps(0, Caps, Len(Caps))
Debug.Print "Codice di errore di waveInGetDevCaps: " & rc
Debug.Print "nome del dispositivo: " & Caps.szPname
'riempiamo la struttura WAVEFORMATEX
format.wFormatTag = 1
format.nChannels = 2
format.wBitsPerSample = 16
format.nSamplesPerSec = 44100
format.nBlockAlign = format.nChannels * format.wBitsPerSample / 8
format.nAvgBytesPerSec = format.nSamplesPerSec * format.nBlockAlign
format.cbSize = 0
'riempiamo la struttura WAVEHDR
Wave.lpData = Buffer(0)
Wave.dwBufferLength = 512
Wave.dwFlags = 0
rc = waveInOpen(hWaveIn, DEVICEID, format, 0, 0, 0)
Debug.Print hWaveIn
Debug.Print "codice errore di waveInOpen: " & rc
rc = waveInPrepareHeader(hWaveIn, Wave, Len(Wave))
Debug.Print "codice errore di waveInPrepareHeader: " & rc
rc = waveInAddBuffer(hWaveIn, Wave, Len(Wave))
Debug.Print "Codice di errore di waveInAddBuffer: " & rc
End Sub
</pre>
Qualcuno può darmi qualche suggerimento in proposito?
Grazie in anticipo

a proposito della funzione waveInStart in VB6. Dopo averla usata ottengo sempre un crash, sia in Vista sia in XP, sia in Win98, per cui credo che il problema sia in qualche mio errore, e non in qualcosa relativo al sistema operativo usato.
Rispondi quotando
