Hallo Matthias,
ok ich versuche es mal anders zu erklären.
Ich initialisiere meine Webcam und lasse mir die Bilder auf dem Rechner anzeigen. Die Bilder der Webcam, werden dann in einem sep. Fenster angezeigt, worauf ich keinen Zugriff habe.
Ich koennte ein Foto machen, dieses abspeichern und dann weiterbearbeiten. Ok aber bei 15 Frames /sek. würde es den Rechner sprengen 
Die Webcam hat ein ereignis was sich FrameCallBack nennt und bei jedem neuem Bild aufgerufen wird. Dieser Function wird ein Parameter „lpVHdr“ mitgegenen was auf eine Adresse im Speicher verweist, wo das Bild liegt ( ist ein Longwert).
Ich habe nun folgendes probiert
Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function SetDIBitsToDevice24 Lib "gdi32" Alias "SetDIBitsToDevice" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BitmapInfoHeader, ByVal wUsage As Long) As Long
Private Type videoHDR
lpData As Long 'address to video buffer
dwBufLen As Long ' size in bytes of data buffer
dwBytesUsed As Long ' size of locked pointer in bytes
dwTimecaptured As Long
dwUser As Long ' user specific data
dwFlags As Long
dwReserved(3) As Long '4
End Type
Private Type BITMAPFILEHEADER
bfType As Integer
bfSize As Long
bfReserved1 As Integer
bfReserved2 As Integer
bfOffBits As Long
End Type
Dim m\_memBits() As Byte
Dim m\_bih As BitmapInfoHeader
Dim videoheader As videoHDR
Private Sub ezVidCap1\_FrameCallback(ByVal lpVHdr As Long)
Call CopyMem(videoheader, ByVal lpVHdr, Len(videoheader))
ReDim m\_memBits(videoheader.dwBytesUsed)
Call CopyMem(m\_memBits(0), videoheader.lpData, videoheader.dwBytesUsed)
Call DrawDIB(Picture1.hdc)
End Sub
Public Function DrawDIB(ByVal outDC As Long, Optional ByVal outX As Long = 0, Optional ByVal outY As Long = 0, Optional ByVal outROP As RasterOpConstants = vbSrcCopy) As Long
Dim pwidth As Integer, pheight As Integer
pwidth = 320: pheight = 240
DrawDIB = SetDIBitsToDevice24(outDC, 320, 240, pwidth, pheight, 0, 0, 0, pheight, m\_memBits(0), m\_bih, 0)
End Function
So nun noch eine kurze Erklärung 
Beim Aufruf von
Soweit scheint es ja zu klappen. Ich kopiere die Daten von der Adresse x in die Strucktur Videoheader und danach in das Array. Dieses ist auch praetig gefuellt ( 152064 daten)
Ich rufe dann die Function DrawPicure auf um so das Bild in die Piturebox 1 zu zeichen. Ein Laufzeitfehler tritt nicht auf, nur wird auch kein Bild angezeigt 
Weisst du woran der Fehler liegt?
MFG Alex