Hallo 
Hallo Markus,
also dein Vorhaben ist nicht klein und auch nicht einfach zu realisieren!
Ich selbst bastel ein Chat und habe darin auch eine Voice Uebertragung die ganz gut klappt 
Wie du das Signal vom Mikro abfragen kannst, weiss ich zu bewerkstelligen. Aber dann das gesprochene Auszuwerten, da weiss ich keinen Weg und ich denke mal das man so etwas nicht realieren kann.
Ok du kannst vorher von den betroffenen Nutzern das jeweilige Wort sprechen lassen. Dieses aufzeichnen und dann mit dem im Programm gesprochene Wort vergleichen. Aber das ist ein schweineaufwand und da würde auch das Progg rel. gross werden.
Aber nun gut, zu deinem Problem
Zuerst einmal ein paar deklarationen, die du brauchst.
Modul Declariation
Option Explicit
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= WaveIn API's
'====================================================================================================
'----------------------------------------------------------------------------------------------------
Public Declare Sub CopyByPointer Lib "kernel32" Alias "RtlMoveMemory" (ByVal lpDestination As Long, ByVal lpSource As Long, ByVal cbCopy As Long)
Public Declare Sub CopyFromPointer Lib "kernel32" Alias "RtlMoveMemory" (ByRef lpvDestination As Any, ByVal lpSource As Long, ByVal cbCopy As Long)
Public Declare Sub CopyToPointer Lib "kernel32" Alias "RtlMoveMemory" (ByVal lpDestination As Long, ByRef lpvSource As Any, ByVal cbCopy As Long)
'····································································································
Public Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Public Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
'····································································································
Public Declare Function waveInAddBuffer Lib "winmm" (ByVal hwi As Long, ByVal pwh As Long, ByVal cbwh As Long) As Long
Public Declare Function waveInClose Lib "winmm" (ByVal hwi As Long) As Long
Public Declare Function waveInGetErrorText Lib "winmm" Alias "waveInGetErrorTextA" (ByVal mmrError As Long, ByVal pszText As String, ByVal cchText As Long) As Long
Public Declare Function waveInOpen Lib "winmm" (ByRef phwi As Long, ByVal uDeviceID As Long, ByRef pwfx As WAVEFORMATEX\_GSM610, ByVal dwCallback As Long, ByVal dwCallbackInstance As Long, ByVal fdwOpen As Long) As Long
Public Declare Function waveInReset Lib "winmm" (ByVal hwi As Long) As Long
Public Declare Function waveInStart Lib "winmm" (ByVal hwi As Long) As Long
Public Declare Function waveInStop Lib "winmm" (ByVal hwi As Long) As Long
Public Declare Function waveInPrepareHeader Lib "winmm" (ByVal hwi As Long, ByVal pwh As Long, ByVal cbwh As Long) As Long
Public Declare Function waveInUnprepareHeader Lib "winmm" (ByVal hwi As Long, ByVal pwh As Long, ByVal cbwh As Long) As Long
'····································································································
Public Declare Function waveOutClose Lib "winmm" (ByVal hwo As Long) As Long
Public Declare Function waveOutGetErrorText Lib "winmm" Alias "waveOutGetErrorTextA" (ByVal mmrError As Long, ByVal pszText As String, ByVal cchText As Long) As Long
Public Declare Function waveOutOpen Lib "winmm" (ByRef phwo As Long, ByVal uDeviceID As Long, ByRef pwfx As WAVEFORMATEX\_GSM610, ByVal dwCallback As Long, ByVal dwCallbackInstance As Long, ByVal fdwOpen As Long) As Long
Public Declare Function waveOutPrepareHeader Lib "winmm" (ByVal hwo As Long, ByVal pwh As Long, ByVal cbwh As Long) As Long
Public Declare Function waveOutReset Lib "winmm" (ByVal hwo As Long) As Long
Public Declare Function waveOutUnprepareHeader Lib "winmm" (ByVal hwo As Long, ByVal pwh As Long, ByVal cbwh As Long) As Long
Public Declare Function waveOutWrite Lib "winmm" (ByVal hwo As Long, ByVal pwh As Long, ByVal cbwh As Long) As Long
'····································································································
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, ByVal lpParam As Long) As Long
Public Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= Misc Constants
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Public Const BUFFER\_SIZE As Long = 65 ' 0.04 sek.
Public Const GMEM\_FIXED As Long = &H0& '
Public Const GMEM\_ZEROINIT As Long = &H40& '
Public Const GWL\_WNDPROC As Long = &HFFFFFFFC '
Public Const CALLBACK\_WINDOW As Long = &H10000 '
Public Const WAVE\_FORMAT\_GSM610 As Long = &H31& '
Public Const WAVE\_MAPPER As Long = &HFFFFFFFF '
Public Const MMSYSERR\_NOERROR As Long = 0 '
Public Const MM\_WOM\_OPEN As Long = &H3BB& '
Public Const MM\_WOM\_CLOSE As Long = &H3BC& '
Public Const MM\_WOM\_DONE As Long = &H3BD& '
Public Const MM\_WIM\_OPEN As Long = &H3BE& '
Public Const MM\_WIM\_CLOSE As Long = &H3BF& '
Public Const MM\_WIM\_DATA As Long = &H3C0& '
Public Const MAXERRORLENGTH As Long = 256 '
'-------------------------------------------------------------------|--------------------------------
'====================================================================================================
'= Types
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Public Type WAVEFORMATEX\_GSM610 '
wFormatTag As Integer '
nChannels As Integer '
nSamplesPerSec As Long '
nAvgBytesPerSec As Long '
nBlockAlign As Integer '
wBitsPerSample As Integer '
cbSize As Integer '
wSamplesPerBlock As Integer '
End Type '
'···································································|································
Public Type WAVEHDR '
lpData As Long '
dwBufferLength As Long '
dwBytesRecorded As Long '
dwUser As Long '
dwFlags As Long '
dwLoops As Long '
lpNext As Long '
dwReserved As Long '
End Type '
'-------------------------------------------------------------------|--------------------------------
'====================================================================================================
'= Wave
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Public objWaveIn As clsWaveIn '
Public objWaveOut As clsWaveOut '
'-------------------------------------------------------------------|--------------------------------
'----------------------------------------------------------------------------------------------------
'####################################################################################################
'#####[WaveIn Callback]############################################################################
'####################################################################################################
Public Function WaveInWindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WaveInWindowProc = objWaveIn.IncommingMessage(hWnd, uMsg, wParam, lParam)
End Function
'####################################################################################################
'#####[WaveOut Callback]###########################################################################
'####################################################################################################
Public Function WaveOutWindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WaveOutWindowProc = objWaveOut.IncommingMessage(hWnd, uMsg, wParam, lParam)
End Function
So dann die Routine der Eingabe, geschieht ueber ein Klassenmodul
Klassenmodul clsWaveIn
Option Explicit
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= Events
'====================================================================================================
'----------------------------------------------------------------------------------------------------
Public Event OnWaveInOpen()
Public Event OnWaveInData(ByRef Data() As Byte, ByVal Length As Long)
Public Event OnWaveInClose()
Public Event OnWaveInError(ByVal Number As Long, ByVal Description As String, ByVal Source As String)
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= Misc Constants
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Private Const CLASS\_NAME As String = "clsWaveIn" '
'-------------------------------------------------------------------|--------------------------------
'====================================================================================================
'= Variables
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Private colWaveHdr As New Collection '
Private wpOrigWndProc As Long '
Private hWindow As Long '
Private hWaveIn As Long '
Private blnOpen As Boolean '
'-------------------------------------------------------------------|--------------------------------
'====================================================================================================
'= Properties
'====================================================================================================
'----------------------------------------------------------------------------------------------------
'-----[Property BufferCount]-----------------------------------------------------------------------
Public Property Get BufferCount() As Long
BufferCount = colWaveHdr.Count
End Property
'----------------------------------------------------------------------------------------------------
'####################################################################################################
'#####[Class]######################################################################################
'####################################################################################################
Private Sub Class\_Initialize()
hWindow = CreateWindowEx( \_
0&, \_
"STATIC", \_
"WAVE\_IN\_WINDOW", \_
0&, \_
0&, \_
0&, \_
0&, \_
0&, \_
0&, \_
0&, \_
App.hInstance, \_
0& \_
)
'
If hWindow 0 Then
Set modWave.objWaveIn = Me
'
wpOrigWndProc = SetWindowLong(hWindow, GWL\_WNDPROC, AddressOf modWave.WaveInWindowProc)
'
If wpOrigWndProc 0 Then
' success
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion SetWindowLong() ist fehlgeschlagen."
End If
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion CreateWindowEx() ist fehlgeschlagen."
End If
End Sub
Private Sub Class\_Terminate()
Dim lResult As Long
'
RecordStop
'
If hWindow 0 Then
If wpOrigWndProc 0 Then
lResult = SetWindowLong(hWindow, GWL\_WNDPROC, wpOrigWndProc)
'
If lResult 0 Then
wpOrigWndProc = 0
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion SetWindowLong() ist fehlgeschlagen."
End If
End If
'
lResult = DestroyWindow(hWindow)
'
If lResult 0 Then
hWindow = 0
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion DestroyWindow() ist fehlgeschlagen."
End If
End If
'
Set modWave.objWaveIn = Nothing
End Sub
'####################################################################################################
'#####[Methods]####################################################################################
'####################################################################################################
Friend Function RecordStart(ByRef Format As WAVEFORMATEX\_GSM610) As Boolean
Dim lResult As Long
'
lResult = waveInOpen( \_
hWaveIn, \_
WAVE\_MAPPER, \_
Format, \_
hWindow, \_
0, \_
CALLBACK\_WINDOW \_
)
'
If lResult = MMSYSERR\_NOERROR Then
AddBuffer
AddBuffer
'
lResult = waveInStart(hWaveIn)
'
If lResult = MMSYSERR\_NOERROR Then
RecordStart = True
Else
RaiseEvent OnWaveInError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
Else
RaiseEvent OnWaveInError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
End Function
Public Function RecordStop() As Boolean
Dim lResult As Long
'
If hWaveIn 0 Then
blnOpen = False
'
lResult = waveInStop(hWaveIn)
'
If lResult = MMSYSERR\_NOERROR Then
' success
Else
RaiseEvent OnWaveInError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
'
lResult = waveInReset(hWaveIn)
'
If lResult = MMSYSERR\_NOERROR Then
' success
Else
RaiseEvent OnWaveInError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
'
lResult = waveInClose(hWaveIn)
'
If lResult = MMSYSERR\_NOERROR Then
hWaveIn = 0
'
RecordStop = True
Else
RaiseEvent OnWaveInError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
End If
End Function
'####################################################################################################
'#####[Callback]###################################################################################
'####################################################################################################
Public Function IncommingMessage(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim udtWaveHdr As WAVEHDR
Dim sKey As String
Dim hHeader As Long
Dim nHeader As Long
Dim lResult As Long
Dim bytData() As Byte
'
On Error Resume Next
'
Select Case uMsg
Case MM\_WIM\_OPEN
blnOpen = True
RaiseEvent OnWaveInOpen
Case MM\_WIM\_CLOSE
blnOpen = False
RaiseEvent OnWaveInClose
Case MM\_WIM\_DATA
nHeader = Len(udtWaveHdr)
'
lResult = waveInUnprepareHeader(hWaveIn, lParam, nHeader)
'
Call CopyFromPointer(udtWaveHdr, lParam, nHeader)
'
If udtWaveHdr.dwBytesRecorded \> 0 Then
ReDim bytData(0 To udtWaveHdr.dwBytesRecorded - 1)
'
Call CopyFromPointer(bytData(0), udtWaveHdr.lpData, udtWaveHdr.dwBytesRecorded)
'
RaiseEvent OnWaveInData(bytData(), udtWaveHdr.dwBytesRecorded)
End If
'
GlobalUnlock udtWaveHdr.dwUser
GlobalFree udtWaveHdr.dwUser
'
sKey = "{" & Hex$(lParam) & "}"
'
hHeader = CLng(colWaveHdr(sKey))
'
GlobalUnlock hHeader
GlobalFree hHeader
'
colWaveHdr.Remove sKey
'
If blnOpen = True Then
AddBuffer
End If
Case Else
IncommingMessage = CallWindowProc(wpOrigWndProc, hWnd, uMsg, wParam, lParam)
End Select
End Function
'####################################################################################################
'#####[Helper]#####################################################################################
'####################################################################################################
Private Function AddBuffer() As Boolean
Dim udtWaveHdr As WAVEHDR
Dim sKey As String
Dim hHeader As Long
Dim pHeader As Long
Dim nHeader As Long
Dim lResult As Long
'
nHeader = Len(udtWaveHdr)
hHeader = GlobalAlloc(GMEM\_FIXED Or GMEM\_ZEROINIT, nHeader)
pHeader = GlobalLock(hHeader)
'
udtWaveHdr.dwUser = GlobalAlloc(GMEM\_FIXED Or GMEM\_ZEROINIT, BUFFER\_SIZE)
udtWaveHdr.lpData = GlobalLock(udtWaveHdr.dwUser)
udtWaveHdr.dwBufferLength = BUFFER\_SIZE
udtWaveHdr.dwBytesRecorded = 0
'
Call CopyToPointer(pHeader, udtWaveHdr, nHeader)
'
sKey = "{" & Hex$(pHeader) & "}"
'
colWaveHdr.Add CStr(hHeader), sKey
'
lResult = waveInPrepareHeader(hWaveIn, pHeader, nHeader)
If lResult = MMSYSERR\_NOERROR Then
lResult = waveInAddBuffer(hWaveIn, pHeader, nHeader)
If lResult = MMSYSERR\_NOERROR Then
AddBuffer = True
End If
End If
End Function
Private Function GetErrorString(lngError As Long) As String
Dim sBuffer As String
Dim lResult As Long
'
sBuffer = String$(MAXERRORLENGTH, vbNullChar)
'
lResult = waveInGetErrorText(lngError, sBuffer, Len(sBuffer))
'
If lResult = MMSYSERR\_NOERROR Then
GetErrorString = StripNull(sBuffer)
End If
End Function
Private Function StripNull(strData As String) As String
Dim lPos As Long
'
lPos = InStr(strData, vbNullChar)
'
If lPos \> 0 Then
StripNull = Left$(strData, lPos)
Else
StripNull = strData
End If
End Function
dann brauchst du noch die Ausgaberoutine, geschieht auch über ein Klassenmodul
Klassenmodul clsWaveOut
Option Explicit
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= Events
'====================================================================================================
'----------------------------------------------------------------------------------------------------
Public Event OnWaveOutOpen()
Public Event OnWaveOutDone(ByVal Length As Long)
Public Event OnWaveOutClose()
Public Event OnWaveOutError(ByVal Number As Long, ByVal Description As String, ByVal Source As String)
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= Misc Constants
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Private Const CLASS\_NAME As String = "clsWaveOut" '
'-------------------------------------------------------------------|--------------------------------
'====================================================================================================
'= Variables
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Private colWaveHdr As New Collection '
Private wpOrigWndProc As Long '
Private hWindow As Long '
Private hWaveOut As Long '
Private blnOpen As Boolean '
'-------------------------------------------------------------------|--------------------------------
'====================================================================================================
'= Properties
'====================================================================================================
'----------------------------------------------------------------------------------------------------
'-----[Property BufferCount]-----------------------------------------------------------------------
Public Property Get BufferCount() As Long
BufferCount = colWaveHdr.Count
End Property
'----------------------------------------------------------------------------------------------------
'####################################################################################################
'#####[Class]######################################################################################
'####################################################################################################
Private Sub Class\_Initialize()
hWindow = CreateWindowEx( \_
0&, \_
"STATIC", \_
"WAVE\_OUT\_WINDOW", \_
0&, \_
0&, \_
0&, \_
0&, \_
0&, \_
0&, \_
0&, \_
App.hInstance, \_
0& \_
)
'
If hWindow 0 Then
Set modWave.objWaveOut = Me
'
wpOrigWndProc = SetWindowLong(hWindow, GWL\_WNDPROC, AddressOf modWave.WaveOutWindowProc)
'
If wpOrigWndProc 0 Then
' success
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion SetWindowLong() ist fehlgeschlagen."
End If
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion CreateWindowEx() ist fehlgeschlagen."
End If
End Sub
Private Sub Class\_Terminate()
Dim lResult As Long
'
PlaybackStop
'
If hWindow 0 Then
If wpOrigWndProc 0 Then
lResult = SetWindowLong(hWindow, GWL\_WNDPROC, wpOrigWndProc)
'
If lResult 0 Then
wpOrigWndProc = 0
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion SetWindowLong() ist fehlgeschlagen."
End If
End If
'
lResult = DestroyWindow(hWindow)
'
If lResult 0 Then
hWindow = 0
Else
Err.Raise Err.LastDllError, CLASS\_NAME, "Die Funktion DestroyWindow() ist fehlgeschlagen."
End If
End If
'
Set modWave.objWaveOut = Nothing
End Sub
'####################################################################################################
'#####[Methods]####################################################################################
'####################################################################################################
Friend Function PlaybackStart(ByRef Format As WAVEFORMATEX\_GSM610) As Boolean
Dim lResult As Long
'
lResult = waveOutOpen( \_
hWaveOut, \_
WAVE\_MAPPER, \_
Format, \_
hWindow, \_
0&, \_
CALLBACK\_WINDOW \_
)
'
If lResult = MMSYSERR\_NOERROR Then
PlaybackStart = True
Else
RaiseEvent OnWaveOutError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
End Function
Public Function PlaybackStop() As Boolean
Dim lResult As Long
'
If hWaveOut 0 Then
lResult = waveOutReset(hWaveOut)
'
If lResult = MMSYSERR\_NOERROR Then
' success
Else
RaiseEvent OnWaveOutError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
'
lResult = waveOutClose(hWaveOut)
'
If lResult = MMSYSERR\_NOERROR Then
hWaveOut = 0
'
PlaybackStop = True
Else
RaiseEvent OnWaveOutError(lResult, GetErrorString(lResult), CLASS\_NAME)
End If
End If
End Function
'####################################################################################################
'#####[Callback]###################################################################################
'####################################################################################################
Public Function IncommingMessage(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim udtWaveHdr As WAVEHDR
Dim sKey As String
Dim hHeader As Long
Dim nHeader As Long
Dim lResult As Long
'
On Error Resume Next
'
Select Case uMsg
Case MM\_WOM\_OPEN
blnOpen = True
RaiseEvent OnWaveOutOpen
Case MM\_WOM\_CLOSE
blnOpen = False
RaiseEvent OnWaveOutClose
Case MM\_WOM\_DONE
nHeader = Len(udtWaveHdr)
'
lResult = waveOutUnprepareHeader(hWaveOut, lParam, nHeader)
'
Call CopyFromPointer(udtWaveHdr, lParam, nHeader)
'
If udtWaveHdr.dwBufferLength \> 0 Then
RaiseEvent OnWaveOutDone(udtWaveHdr.dwBufferLength)
End If
'
GlobalUnlock udtWaveHdr.dwUser
GlobalFree udtWaveHdr.dwUser
'
sKey = "{" & Hex$(lParam) & "}"
'
hHeader = CLng(colWaveHdr(sKey))
'
GlobalUnlock hHeader
GlobalFree hHeader
'
colWaveHdr.Remove sKey
Case Else
IncommingMessage = CallWindowProc(wpOrigWndProc, hWnd, uMsg, wParam, lParam)
End Select
End Function
'####################################################################################################
'#####[Helper]#####################################################################################
'####################################################################################################
Public Function PlayBuffer(ByVal Pointer As Long, ByVal Length As Long) As Boolean
Dim udtWaveHdr As WAVEHDR
Dim sKey As String
Dim hHeader As Long
Dim pHeader As Long
Dim nHeader As Long
Dim lResult As Long
'
nHeader = Len(udtWaveHdr)
hHeader = GlobalAlloc(GMEM\_FIXED Or GMEM\_ZEROINIT, nHeader)
pHeader = GlobalLock(hHeader)
'
udtWaveHdr.dwUser = GlobalAlloc(GMEM\_FIXED Or GMEM\_ZEROINIT, Length)
udtWaveHdr.lpData = GlobalLock(udtWaveHdr.dwUser)
udtWaveHdr.dwBufferLength = Length
'
Call CopyByPointer(udtWaveHdr.lpData, Pointer, Length)
Call CopyByPointer(pHeader, VarPtr(udtWaveHdr), nHeader)
'
sKey = "{" & Hex$(pHeader) & "}"
'
colWaveHdr.Add CStr(hHeader), sKey
'
lResult = waveOutPrepareHeader(hWaveOut, pHeader, nHeader)
If lResult = MMSYSERR\_NOERROR Then
lResult = waveOutWrite(hWaveOut, pHeader, nHeader)
If lResult = MMSYSERR\_NOERROR Then
PlayBuffer = True
End If
End If
End Function
Private Function GetErrorString(lngError As Long) As String
Dim sBuffer As String
Dim lResult As Long
'
sBuffer = String$(MAXERRORLENGTH, vbNullChar)
'
lResult = waveOutGetErrorText(lngError, sBuffer, Len(sBuffer))
'
If lResult = MMSYSERR\_NOERROR Then
GetErrorString = StripNull(sBuffer)
End If
End Function
Private Function StripNull(strData As String) As String
Dim lPos As Long
'
lPos = InStr(strData, vbNullChar)
'
If lPos \> 0 Then
StripNull = Left$(strData, lPos)
Else
StripNull = strData
End If
End Function
Soweit solltest du nun alles wichtige haben 
Wenn du dein Programm starten willst, so musst du aber noch, den ganzen Spass Initialisieren, das passiert wiefolgt
In der Form wo du es startest, nennen wir sie frmMain
Form frmMain
Option Explicit
'----------------------------------------------------------------------------------------------------
'====================================================================================================
'= Wave Stream
'====================================================================================================
'-------------------------------------------------------------------|--------------------------------
Private WithEvents objWaveIn As clsWaveIn '
Private WithEvents objWaveOut As clsWaveOut '
'···································································|································
Private udtWaveFormatExGSM As WAVEFORMATEX\_GSM610 '
Private strBuffer As String '
Private dblWaveIn As Double '
Private dblWaveOut As Double '
Private Sub Form\_Load()
Set objWaveIn = New clsWaveIn
Set objWaveOut = New clsWaveOut
'
With udtWaveFormatExGSM
.wFormatTag = WAVE\_FORMAT\_GSM610
.nChannels = 1
.nSamplesPerSec = 8000
.nAvgBytesPerSec = 1625
.nBlockAlign = 65
.wBitsPerSample = 0
.cbSize = 2
.wSamplesPerBlock = 320
End With
End Sub
Private Sub Form\_Unload(Cancel As Integer)
Set objWaveIn = Nothing
Set objWaveOut = Nothing
End Sub
Private Sub Starte() ' --\> Aufzeichnung wird gestartet
If objWaveIn.RecordStart(udtWaveFormatExGSM) = True Then
If objWaveOut.PlaybackStart(udtWaveFormatExGSM) = True Then
dblWaveIn = 0
dblWaveOut = 0
end if
end if
End Sub
Private Sub Stopp() ' ---\> Aufzeichnung wird beendet
objWaveOut.PlaybackStop
objWaveIn.RecordStop
End Sub
Private Sub objWaveIn\_OnWaveInError(ByVal Number As Long, ByVal Description As String, ByVal Source As String)
MsgBox "Fehler " & CStr(Number) & ": " & Description & vbCrLf & vbCrLf & \_
"Quelle: " & Source, \_
vbOKOnly Or vbCritical
End Sub
Ich habe hier nicht alle Ereignisse aufgefuehrt. Aber ich denke mal das sich das alles selbst erklärt 
Diese kannst du dann für diverse Anzeigen nehmen 
MFG Alex
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]