Feedback

VB - Webcam in PictureBox anzeigen

Veröffentlicht von am 28.03.2010
(0 Bewertungen)
Diese Klasse erzeugt einen "Schnappschuss", sollte eine Web-Cam an den Computer angeschlossen und erkannt sein. In diesem Fall wird durch einen Button das Bild in einer PictureBox angezeigt.
GFU-Schulungen  [Anzeige]

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

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

1 Kommentare zum Snippet

signItUp schrieb am 09.05.2011:
Hy,
ich habe das Beispiel probiert und mit einer Kamera funktioniert es auch problemlos.
Nur zwei Kameras konnte ich dann nicht mehr gleichzeitig in zwei verschiedenen PictureBoxen anzeigen.
Habt ihr hierzu einen Tipp?
 

Logge dich ein, um hier zu kommentieren!