60734
Goto Top

vb.net webcamzugriff problem

Hallo Leute!

Habe mir heute Mittag aus einem Codebeispiel, wie man ne Webcam in vb.net ansteuert ne Klasse draus gebastelt, sieht jetzt so aus:

Public Class Webcam
    Const WM_CAP As Short = &H400S
    Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10
    Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11
    Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30
    Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50
    Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52
    Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53
    Const WS_CHILD As Integer = &H40000000
    Const WS_VISIBLE As Integer = &H10000000
    Const SWP_NOMOVE As Short = &H2S
    Const SWP_NOSIZE As Short = 1
    Const SWP_NOZORDER As Short = &H4S
    Const HWND_BOTTOM As Short = 1
    Dim iDevice As Integer = 0
    Dim hHwnd As Integer 

    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Object) As Integer  
    Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer  
    Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean  
    Declare Function capCreateCaptureWindowA Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Short, ByVal hWndParent As Integer, ByVal nID As Integer) As Integer  
    Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean  


    Function OpenPreviewWindow(ByVal fenster As Object, ByVal previewrate As Integer, ByVal width As Integer, ByVal height As Integer)

        hHwnd = capCreateCaptureWindowA("webcam", WS_VISIBLE Or WS_CHILD, 0, 0, width, height, fenster.Handle.ToInt32, 0)  
        If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, 0, 0) Then
            SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)
            SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, previewrate, 0)
            SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)
            SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, width, height, SWP_NOMOVE Or SWP_NOZORDER)
        Else
            DestroyWindow(hHwnd)
        End If
    End Function
    Function ClosePreviewWindow()
        SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0)
        DestroyWindow(hHwnd)
    End Function

    Private Sub preview_save(ByVal filename As String)
        Dim data As IDataObject
        Dim bmap As Image
        SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0)
        data = Clipboard.GetDataObject()
        If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
            bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Image)
            bmap.Save(filename, Imaging.ImageFormat.Jpeg)
        End If
    End Sub

End Class

Um die webcam dann zu starten mache ich es wie folgt:
Dim webcamxy as new webcam()

Und dann z.B.

Private Sub abc () Handles Button.Click
webcamxy.openPreviewWindow(PictureBox1, 50, 320, 240)
End Sub


Leider wird mir jedes mal, sobald ich ich dann die Webcam starten will, dieses blöde Fenster angezeigt !!! http://www.abload.de/img/bildx8rh.jpg

Wie kriege ich das weg, sodass mir das Bild der Webcam direkt in der PictureBox angezeigt wird, ohne erst dieses Zwischenfenster, gerade wenn's nur eine!!!! webcam gibt.???

Gruss Markus

Content-Key: 130138

Url: https://administrator.de/contentid/130138

Printed on: April 25, 2024 at 13:04 o'clock