During this time, engage in video acquisition procedures, find a program that drives the camera written by C # on the foreign website. After transformation and debugging, as follows: After installing the camera, you can usually find an Avicap32.dll file This is a summary for the idea of the idea; use system.Runtime.InterOpServices; Namespace Webcam {// Avicap's summary description.
public class showVideo {// showVideo calls [DllImport ( "avicap32.dll")] public static extern IntPtr capCreateCaptureWindowA (byte [] lpszWindowName, int dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, int nID) ; [DllImport ( "avicap32.dll")] public static extern bool capGetDriverDescriptionA (short wDriver, byte [] lpszName, int cbName, byte [] lpszVer, int cbVer); [DllImport ( "User32.dll")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, bool wParam, int lParam); [DllImport ( "User32.dll")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, short wParam, int lParam); [DllImport ( "User32 .dll ")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, short wParam, FrameEventHandler lParam); [DllImport (" User32.dll ")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, int wParam, ref BitMapInfo LParam; [DLLIMPORT ("User32.dll")] Public Static Extern Int setWindowPos (INTPTR HWND, INT HWNDINSERTAFTER, INT X, INT Y, INT CX, INT CY, INT WFLAGS); [DLLIMPOR t ( "avicap32.dll")] public static extern int capGetVideoFormat (IntPtr hWnd, IntPtr psVideoFormat, int wSize); // Constantspublic const int WM_USER = 0x400; public const int WS_CHILD = 0x40000000; public const int WS_VISIBLE = 0x10000000; public const int SWP_NOMOVE = 0x2; public const int SWP_NOZORDER = 0x4; public const int WM_CAP_DRIVER_CONNECT = WM_USER 10; public const int WM_CAP_DRIVER_DISCONNECT = WM_USER 11; public const int WM_CAP_SET_CALLBACK_FRAME = WM_USER 5; public const int WM_CAP_SET_PREVIEW = WM_USER 50; public const INT WM_CAP_SET_PREVIEWRATE = WM_USER 52; public const INT WM_CAP_SET_VIDEOFORMAT =
WM_USER 45; // Structures [StructLayout (LayoutKind.Sequential)] public struct VIDEOHDR {[MarshalAs (UnmanagedType.I4)] public int lpData; [MarshalAs (UnmanagedType.I4)] public int dwBufferLength; [MarshalAs (UnmanagedType.I4) ] public int dwBytesUsed; [MarshalAs (UnmanagedType.I4)] public int dwTimeCaptured; [MarshalAs (UnmanagedType.I4)] public int dwUser; [MarshalAs (UnmanagedType.I4)] public int dwFlags; [MarshalAs (UnmanagedType.ByValArray, SizeConst = 4)] public int [] dwReserved;} [StructLayout (LayoutKind.Sequential)] public struct BITMAPINFOHEADER {[MarshalAs (UnmanagedType.I4)] public Int32 biSize; [MarshalAs (UnmanagedType.I4)] public Int32 biWidth; [MarshalAs (UnmanagedType .I4)] public Int32 biHeight; [MarshalAs (UnmanagedType.I2)] public short biPlanes; [MarshalAs (UnmanagedType.I2)] public short biBitCount; [MarshalAs (UnmanagedType.I4)] public Int32 biCompression; [MarshalAs (UnmanagedType.I4 )] public int32 bisizeImage; [Marshalas (unmanagedtype.i4)] public int32 Bixpelspermeter; [Marshalas (UnmanagedType .I4)] public Int32 biYPelsPerMeter; [MarshalAs (UnmanagedType.I4)] public Int32 biClrUsed; [MarshalAs (UnmanagedType.I4)] public Int32 biClrImportant;} StructLayout (LayoutKind.Sequential)] public struct BITMAPINFO {MarshalAs (UnmanagedType.Struct, SizeConst = 40)] public BITMAPINFOHEADER bmiHeader; MarshalAs (UnmanagedType.ByValArray, SizeConst = 1024)] public Int32 [] bmiColors;} public delegate void FrameEventHandler (IntPtr lwnd, IntPtr lpVHdr); // public methodspublic static object GetStructure (IntPtr ptr, ValueType structure) {return Marshal.PtrToStructure (ptr, structure.GetType ());} public static object GetStructure (int ptr, ValueType structure) {return GetStructure (new IntPtr (ptr), structure);
} public static void copy (INTPTR PTR, BYTE [] data) {Marshal.copy (PTR, DATA, 0, DATA.LENGTH); PUBLIC Static Void Copy (int Ptr, Byte [] data) {copy (new intptr ptr), data);} public static int SizeOf (object structure) {return Marshal.SizeOf (structure);}} // Web Camera Classpublic class WebCamera {// Constructurpublic WebCamera (IntPtr handle, int width, int height) {mControlPtr = handle; mWidth = width; mHeight = height;} // delegate for frame callbackpublic delegate void RecievedFrameEventHandler (byte [] data); public event RecievedFrameEventHandler RecievedFrame; private IntPtr lwndC; // Holds the unmanaged handle of the controlprivate IntPtr mControlPtr; / / Holds the managed pointer of the controlprivate int mWidth; private int mHeight; private showVideo.FrameEventHandler mFrameEventHandler;! // Delegate instance for the frame callback - must keep alive gc should NOT collect it // Close the web camerapublic void CloseWebcam () { This.capdriverdisconnect (this.lwndc);} // start the web camerapublic void startwebcam () {Byte [] lpszName = new byte [100]; byte [] lpszVer = new byte [100]; showVideo.capGetDriverDescriptionA (0, lpszName, 100, lpszVer, 100); this.lwndC = showVideo.capCreateCaptureWindowA (lpszName, showVideo. WS_VISIBLE showVideo.WS_CHILD, 0, 0, mWidth, mHeight, mControlPtr, 0); if (this.capDriverConnect (this.lwndC, 0)) {this.capPreviewRate (this.lwndC, 66); this.capPreview (this. lwndC, true); showVideo.BITMAPINFO bitmapinfo = new showVideo.BITMAPINFO (); bitmapinfo.bmiHeader.biSize = showVideo.SizeOf (bitmapinfo.bmiHeader); bitmapinfo.bmiHeader.biWidth = 352; bitmapinfo.bmiHeader.biHeight = 288; bitmapinfo. Bmiheader.Biplanes = 1; BitmapInfo.Bmiheader.biBitcount = 24;
this.capSetVideoFormat (this.lwndC, ref bitmapinfo, showVideo.SizeOf (bitmapinfo)); this.mFrameEventHandler = new showVideo.FrameEventHandler (FrameCallBack); this.capSetCallbackOnFrame (this.lwndC, this.mFrameEventHandler); showVideo.SetWindowPos (this. lwndC, 0, 0, 0, mWidth, mHeight, 6);}} // private functionsprivate bool capDriverConnect (IntPtr lwnd, short i) {return showVideo.SendMessage (lwnd, showVideo.WM_CAP_DRIVER_CONNECT, i, 0);} private bool capDriverDisconnect (IntPtr lwnd) {return showVideo.SendMessage (lwnd, showVideo.WM_CAP_DRIVER_DISCONNECT, 0, 0);} private bool capPreview (IntPtr lwnd, bool f) {return showVideo.SendMessage (lwnd, showVideo.WM_CAP_SET_PREVIEW, f, 0); } private bool capPreviewRate (IntPtr lwnd, short wMS) {return showVideo.SendMessage (lwnd, showVideo.WM_CAP_SET_PREVIEWRATE, wMS, 0);} private bool capSetCallbackOnFrame (IntPtr lwnd, showVideo.FrameEventHandler lpProc) {return showVideo.SendMessage (lwnd, showVideo .Wm_cap_set_callback_frame, 0, lpproc);} Private Bool CapsetVideoFo rmat (IntPtr hCapWnd, ref showVideo.BITMAPINFO BmpFormat, int CapFormatSize) {return showVideo.SendMessage (hCapWnd, showVideo.WM_CAP_SET_VIDEOFORMAT, CapFormatSize, ref BmpFormat);} private void FrameCallBack (IntPtr lwnd, IntPtr lpVHdr) {showVideo.VIDEOHDR videoHeader = new showVideo.VIDEOHDR (); byte [] VideoData; videoHeader = (showVideo.VIDEOHDR) showVideo.GetStructure (lpVHdr, videoHeader); VideoData = new byte [videoHeader.dwBytesUsed]; showVideo.Copy (videoHeader.lpData, VideoData); if ( ! this.RecievedFrame = null) this.RecievedFrame (VideoData);}}} particular call as follows: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data Using Webcam;
A summary description of Namespace WebCam {/// Form1. public class Form1: System.Windows.Forms.Form {private System.Windows.Forms.Panel panelPreview; private System.Windows.Forms.Button b_play; private System.Windows.Forms.Button b_stop; /// necessary design variables . Private system.componentmodel.Container Components = NULL; WebCamera Wc; Public Form1 () {Windows Form Designer Support for INITIALIZECMOMPONENT (); // Todo: Add any constructor code after INITIALIZEComponent call} /// Clean up Resources being used. Protected Override Void Dispose (Bool Disposing) {if (disponents! = null) {Components.dispose ();}} Base.Dispose (Disposing);} #Region Windows Form Designer Generated code // / /// Designer Support the required method - Do not use the code editor to modify the // / this method.
private void InitializeComponent () {this.b_play = new System.Windows.Forms.Button (); this.panelPreview = new System.Windows.Forms.Panel (); this.b_stop = new System.Windows.Forms.Button () This.Suspendlayout (); // b_playthis.b_play.location = new system.drawing.point (280, 368); this.b_play.name = "b_play"; this.b_play.tabindex = 0; this.b_play.text = "& Play"; this.b_play.Click = new System.EventHandler (this.button1_Click); // panelPreviewthis.panelPreview.Location = new System.Drawing.Point (8, 8); this.panelPreview.Name = "panelPreview "; this.panelPreview.Size = new System.Drawing.Size (344, 272); this.panelPreview.TabIndex = 1; // b_stopthis.b_stop.Enabled = false; this.b_stop.Location = new System.Drawing.Point (360, 368); this.b_stop.name = "b_stop"; this.b_stop.tabindex = 2; this.b_stop.text = "& stop"; this.b_stop.click = new system.eventhandler (this.b_stop_click) ; // form1this.autoscalebasesize = new system.drawing.size (6, 14); this.clientsize = new system.drawing.size (464, 413); this.Controls.add (this. B_Stop); this.controls.add (this.panelpreview); this.Controls.add (this.b_play); this.maximizebox = false; this.minimizebox = false; this.name = "form1"; this.text = " Goodview Test Web Camera "; this.Load = New System.EventHandler (this.form1_load); this.ResumeLayout (false);} #ENDREGION // Application main entry point.