Hallo!
Ich versuche gerade eine Webcam in vb.net zum laufen zu bringen, 1 PictureBox, 1 Button und dieser Code:
So das ganze Problem ist jetzt, es funktioniert genau 1 mal. Sobald ich das Fenster schließe und öffne klappt es nicht mehr. Wenn ich jetzt den PC Neu Starte. Klappt es wieder, 1 mal.
Witzigerweise beim 1. mal klicke ich auf Button1 und es läuft los
Beim 2. mal klicke ich auf Button1 dann kommt das Videoquellen auswahlfenster -> Übernehmen, OK und dann bleibt das Fenster schwarz
PC Daten:
Intel Core i5
NVidia GeForce GT610
Windows 10 x64
ich hoffe es kann mir jemand helfen
*Topic verschoben, Code-BBCode korrigiert*
Ich versuche gerade eine Webcam in vb.net zum laufen zu bringen, 1 PictureBox, 1 Button und dieser Code:
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(PictureBox1.Handle)
- End Sub
- End Class
So das ganze Problem ist jetzt, es funktioniert genau 1 mal. Sobald ich das Fenster schließe und öffne klappt es nicht mehr. Wenn ich jetzt den PC Neu Starte. Klappt es wieder, 1 mal.
Witzigerweise beim 1. mal klicke ich auf Button1 und es läuft los
Beim 2. mal klicke ich auf Button1 dann kommt das Videoquellen auswahlfenster -> Übernehmen, OK und dann bleibt das Fenster schwarz
PC Daten:
Intel Core i5
NVidia GeForce GT610
Windows 10 x64
ich hoffe es kann mir jemand helfen
*Topic verschoben, Code-BBCode korrigiert*
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()