C#打开摄像头

 public partial class Form1 : Form
    {
        private int hHwnd;
        private const int prot = 200;
        public Form1()
        {
            InitializeComponent();
        }
        //视频HDR标签结构
        //public struct videohdr_tag
        //{
        //    public byte[] lpDate;
        //    public int dwBuffterLenght;//数据缓冲区的长度
        //    public int dwBytesUsed;//数据使用的字节
        //    public int dwTimeCaptured;//数据的时间
        //    public int dwUser;//数据的仓库用户
        //    public int dwFlags;//数据的标志
        //    public int[] dwReserved;//数据仓库保留
        //}
        public delegate bool CallBack(int hwnd, int lParam);//回调
        ///   <summary>   
        ///   必需的设计器变量。   
        ///   </summary> 
        [DllImport("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]

        public static extern int capCreateCaptureWindowA([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);

        [DllImport("user32",EntryPoint ="SendMessageA",CharSet =CharSet.Ansi,SetLastError =true,ExactSpelling =true)]
        public static extern int SendMessage(int hwnd,int wMsg,int wParam,[MarshalAs(UnmanagedType.AsAny)] object lPanam);
        [DllImport("user32",CharSet =CharSet.Ansi,SetLastError =true,ExactSpelling =true)]

        public static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);//设置窗口
        /// <summary>
        /// 打开摄像头
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            int intWidth = this.panel1.Width;
            int intHeight = this.panel1.Height;
            int intDevice = 0;
            string refDevice = intDevice.ToString();

            hHwnd = Form1.capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 1024, 800, this.panel1.Handle.ToInt32(), 0);
            if (Form1.SendMessage(hHwnd,0x40a,intDevice,0)>0)
            {
                Form1.SendMessage(this.hHwnd, 0x435, -1, 0);
                Form1.SendMessage(this.hHwnd, 0x434, 0x42, 0);
                Form1.SendMessage(this.hHwnd, 0x432, -1, 0);
                Form1.SetWindowPos(this.hHwnd, 1, 0, 0, intWidth, intHeight,6);
            }
            else
            {
            }
        }
    }

 

posted @ 2015-10-22 17:31  Alvin-fan  阅读(661)  评论(0)    收藏  举报