This article drives the camera with the Avicap32.dll library. Due to grab, video features.
using System; using System.Runtime.InteropServices; using System.Drawing; using System.Drawing.Imaging; namespace using System; using System.Runtime.InteropServices; using System.Drawing; using System.Drawing.Imaging; namespace PickHead {// / /// a camera control class /// summary> public class Pick {private const int WM_USER = 0x400; private const int WS_CHILD = 0x40000000; private const int WS_VISIBLE = 0x10000000; private const int WM_CAP_START = WM_USER ; private const int WM_CAP_STOP = WM_CAP_START 68; private const int WM_CAP_DRIVER_CONNECT = WM_CAP_START 10; private const int WM_CAP_DRIVER_DISCONNECT = WM_CAP_START 11; private const int WM_CAP_SAVEDIB = WM_CAP_START 25; private const int WM_CAP_GRAB_FRAME = WM_CAP_START 60; private const int WM_CAP_SEQUENCE = WM_CAP_START 62; private const int WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START 20; private const int WM_CAP_SEQUENCE_NOFILE = WM_CAP_START 63; private const int WM_CAP_SET_OVERLAY = WM_CAP_START 51; private const int WM_CAP_SET_PREVIEW = WM_CAP_START 50; private const int WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START 6; private const int WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START 2; private const int WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START 3; private const int WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START 5; private const int WM_CAP_SET_SCALE = WM_CAP_START 53; private const int WM_CAP_SET_PREVIEWRATE = WM_CAP_START 52; private IntPtr hWndC; private bool bStat = false; private IntPtr mControlPtr; private int mWidth; private int mHeight;
Private int mlef; private int mletop; /// /// Initializing camera /// summary> /// Control handle param> /// Start the left distance param> /// Start displayed param> /// The width to display / parame> /// The length of the length of param> PUBLIC PICK (INTPTR HANDLE, INT LEFT, INT TOP, INT Width, Int Height) {mwidth = Width; MWIDTH = Width; MWIDTH = Width; MWIDTH = Width; MWIDTH = Width = height; mLeft = left; mTop = top;} [DllImport ( "avicap32.dll")] private static extern IntPtr capCreateCaptureWindowA (byte [] lpszWindowName, int dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent , int nID); [DllImport ( "avicap32.dll")] private static extern int capGetVideoFormat (IntPtr hWnd, IntPtr psVideoFormat, int wSize); [DllImport ( "User32.dll")] private static extern bool SendMessage (IntPtr hWnd, INT WMSG, INT WPARAM, long lparam; /// /// Start display image /// summary> public void start () {if (bstat) return; bstat = true; Byte [] lpszname = New byte [100]; hWndC = capCreateCaptureWindowA (lpszName, WS_CHILD | WS_VISIBLE, mLeft, mTop, mWidth, mHeight, mControlPtr, 0); if (hWndC.ToInt32 () = 0!) {SendMessage (hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); SendMessage (hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0); SendMessage (hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0); SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage (hWndC, WM_CAP_SET_SCALE, 1, 0); SendMessage (hWndC , WM_CAP_SET_PREVIEWRATE, 66, 0); SendMessage (HWNDC, WM_CAP_SET_OVERLAY, 1, 0);