Il linguaggio è vb.net
visual studio 2022
e questo è il codice che mostra l'immagine
come dicevo, se gira da solo funziona, all'interno di un gestionale, sempre vb.net si vede nero
Private Sub buttonStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonStart.Click
'dirigo il flusso della dll nel mio picture box
'imposto il device selezionato
iDevice = lstDevices.SelectedIndex
'faccio partire la preview
startPreview()
'finezza ... blocco il bottone di start :-)
buttonStop.Enabled = True
buttonStart.Enabled = False
buttonGrab.Enabled = True
End Sub
Private Sub startPreview()
'dichiaro l'altezza e la larghezza del box immagine
Dim iHeight As Integer = objPreview.Height
Dim iWidth As Integer = objPreview.Width
'Dico alla dll di dirigere il flusso alla mia finestra di preview
hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 640, _
480, objPreview.Handle.ToInt32, 0)
'mi collego al device
If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then
'Imposto la preview
SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)
'imposto il rate in millisecondi
SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0)
'Faccio partire la preview
SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)
'Scalo la preview all'interno della dimensione del mio box immagine
SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, iWidth, iHeight, _
SWP_NOMOVE Or SWP_NOZORDER)
Else
'Non è possibile accedere al device
DestroyWindow(hHwnd)
End If
End Sub