Halli Hallo,
ich habe im Internet ein Snippen gefunden und kopiert, um es später weiter anzupassen. Nun ist es so, dass es nur so halb läuft... Bei ersten mal, hat er sofort das Bild der Webcam angezeigt und alles war ok.
Wenn ich das Programm erneut starte, fragt er mich, welche Kamera ich nutzen möchte, doch wenn ich die dann auswähle, passiert nichts mehr... Die Picturebox bleibt schwarz.... und auch die kleine Kontroll LED an der Webcam bleibt aus! Lediglich das Fenster kommt:
Hier ist das Snippet:
Würde mich sehr über Hilfe freuen.
EDIT: ich habe die Vermutung, dass die Verbindung zur Webcam nicht richtig beendet wird, weil nach einem Rechnerneustart geht es wieder genau 1 mal!
Mit freundlichen Grüßen
Friloo
ich habe im Internet ein Snippen gefunden und kopiert, um es später weiter anzupassen. Nun ist es so, dass es nur so halb läuft... Bei ersten mal, hat er sofort das Bild der Webcam angezeigt und alles war ok.
Wenn ich das Programm erneut starte, fragt er mich, welche Kamera ich nutzen möchte, doch wenn ich die dann auswähle, passiert nichts mehr... Die Picturebox bleibt schwarz.... und auch die kleine Kontroll LED an der Webcam bleibt aus! Lediglich das Fenster kommt:
Hier ist das Snippet:
VB.NET-Quellcode
- Class ShowWebcam
- Dim videoHandle As IntPtr
- Declare Auto Function SendMessage Lib "user32" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
- Declare Auto Function capCreateCaptureWindow Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal x As Short, ByVal y As Integer, ByVal nWidth As Short, ByVal nHeight As Short, ByVal hWndParent As IntPtr, ByVal nID As Byte) As IntPtr
- Const EM_LINEFROMCHAR As Integer = &HC9
- Const EM_LINEINDEX As Integer = &HBB
- Const WS_CHILD As Integer = &H40000000
- Const WS_VISIBLE As Integer = &H10000000
- Const WM_USER As Short = &H400S
- Const WM_CAP_START As Short = &H400S
- Const WM_CAP_EDIT_COPY As Short = WM_CAP_START + 30
- Const WM_CAP_DRIVER_CONNECT As Short = WM_CAP_START + 10
- Const WM_CAP_SET_PREVIEWRATE As Short = WM_CAP_START + 52
- Const WM_CAP_SET_OVERLAY As Short = WM_CAP_START + 51
- Const WM_CAP_SET_PREVIEW As Short = WM_CAP_START + 50
- Const WM_CAP_DRIVER_DISCONNECT As Short = WM_CAP_START + 11
- Function CreateCaptureWindow(ByRef hWndParent As IntPtr, Optional ByRef x As Short = 0, Optional ByRef y As Short = 0, Optional ByRef nWidth As Short = 640, Optional ByRef nHeight As Short = 420, Optional ByRef nCameraID As Integer = 0) As IntPtr
- Dim previewHandle As IntPtr
- previewHandle = capCreateCaptureWindow("Video", WS_CHILD + WS_VISIBLE, x, y, nWidth, nHeight, hWndParent, 1)
- SendMessage(previewHandle, WM_CAP_DRIVER_CONNECT, nCameraID, 0)
- SendMessage(previewHandle, WM_CAP_SET_PREVIEWRATE, 30, 0)
- SendMessage(previewHandle, WM_CAP_SET_OVERLAY, 1, 0)
- SendMessage(previewHandle, WM_CAP_SET_PREVIEW, 1, 0)
- Return previewHandle
- End Function
- Sub Disconnect(ByRef nCaptureHandle As IntPtr, Optional ByRef nCameraID As Integer = 0)
- SendMessage(nCaptureHandle, WM_CAP_DRIVER_DISCONNECT, nCameraID, 0)
- End Sub
- Sub Form1_FormClosing() Handles Me.FormClosing
- Me.Disconnect(videoHandle)
- End Sub
- Sub Button1_Click() Handles Button1.Click
- videoHandle = Me.CreateCaptureWindow(Picture1.Handle)
- End Sub
- End Class
Würde mich sehr über Hilfe freuen.
EDIT: ich habe die Vermutung, dass die Verbindung zur Webcam nicht richtig beendet wird, weil nach einem Rechnerneustart geht es wieder genau 1 mal!
Mit freundlichen Grüßen
Friloo
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „friloo“ ()