showVideo C#版 摄像头驱动程序

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace WebCamera
{
    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);
        [DllImport("avicap32.dll")]
        public static extern int capGetVideoFormat(IntPtr hWnd, IntPtr psVideoFormat, int wSize);

        // Constants
        public 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 methods
        public 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);
        }

    }
}转自:http://www.cnblogs.com/zeroone/archive/2010/04/13/1711189.html

showVideo C#版 摄像头驱动程序相关推荐

  1. 万能摄像头驱动程序安装

            当你的摄像头的驱动光盘找不到时,往往会去在网上下载万能摄像头驱动程序,却在安装时提示需要指定一个驱动地址,而这时候无论你怎么指定驱动的地址,都显示找不到硬件驱动,而且系统设备里显示是未 ...

  2. MTK平台手机的网络摄像头驱动程序

    MTK平台手机的网络摄像头驱动程序 http://www.desaymobile.com.cn/Admin/DownLoad/UploadFiles/MTK.rar

  3. WinXP下虚拟摄像头驱动程序开发

    摄像头驱动程序的主要目的是通过硬件捕捉视频信号.微软公司提供了一套视频驱动的接口,可以满足这个接口的视频驱动程序.第三方厂商开发的软件,如QQ和MSN等软件,都可以通过这个接口读取视频摄像头采集的数据 ...

  4. 摄像头驱动_摄像头驱动程序必需的11个ioctl及摄像头数据的获取过程

    摄像头驱动_摄像头驱动程序必需的11个ioctl及摄像头数据的获取过程 根据虚拟驱动vivi的使用过程彻底分析摄像头驱动 // 1~2都是在v4l2_open里调用 1. open 2. ioctl( ...

  5. WinXP下虚拟摄像头驱动程序开发 1

    WinXP下虚拟摄像头驱动程序开发 摄像头驱动程序的主要目的是通过硬件捕捉视频信号.微软公司提供了一套视频驱动的接口,可以满足这个接口的视频驱动程序.第三方厂商开发的软件,如QQ和MSN等软件,都可以 ...

  6. Linux下摄像头驱动程序spca5xx和gspca

    最近一直忙着作些小实验,头些天做的一些笔记没有来得及整理.先放在word里了,这会实在不是特别想看书,把没有来得及写上的东西补一下. 1        spca5xx和spcaview简单介绍 Lin ...

  7. linux arm下硬件驱动程序放哪里,Arm-Linux摄像头驱动程序的移植

    Arm开发板上摄像头的移植有两种方法:第一,将驱动程序添加到内核,通过编译内核,烧写到板子上:第二种,通过动态加载摄像头驱动模块的方法进行硬件的驱动.作者首先在PC的linux系统进行摄像驱动程序的移 ...

  8. USB摄像头驱动程序分析

    uvc驱动程序主要位于3.42内核\drivers\media\video\uvc文件夹中.由于本身十分复杂,在此只做简单分析. 这幅图来源于UVC的规格书.可以看到一个完整的UVC设备主要分为两个部 ...

  9. C#.net编写摄像头驱动程序,用avicap32.dll

    作者:zzmdegm 转自:http://blog.csdn.net/zzmdegm/article/details/1915364 装了摄像头后一般会有 avicap32.dll文件,没有一样可以用 ...

  10. UVC摄像头驱动程序框架

    前言 USB video class又称为USB video device class or UVC就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头,数字摄 ...

最新文章

  1. Sitecake – 可视化编辑,所见即所得的 CMS
  2. 用Python3Request爬取英雄联盟皮肤、单线程爬取
  3. oracle USER 与 Schema 的关系与区别
  4. SpringSecurity 权限控制准备之IOC容器结构说明
  5. 【JavaScript】图片组无缝轮播的网页编写方法
  6. 9 FI配置-财务会计-维护会计年度变式
  7. Python中的常用模块
  8. 使用 data URI scheme 在网页中内嵌图片[转]
  9. 【Unity基础】Unity打包exe
  10. SD皇冠毛绒布料材质制作视频教程 中文字幕
  11. 安卓系统格式化SD卡
  12. 怎样学好Python
  13. 数据库实验一:数据库与数据表定义(1)—— 数据库相关操作
  14. 小程序的大于小于等于的写法
  15. 2017最新苹果 APPLE ID注册流程
  16. 如何从视频中分离音频/提取音频/提取视频
  17. 显著图(Saliency map)
  18. C++一本通1086(角谷猜想)
  19. sql语句查询出重复的数据
  20. 10.从头开始做服务端

热门文章

  1. 我的2019全年目标
  2. iOS安装ipa文件
  3. 平面设计师主要做什么?平面设计的工作内容有哪些?
  4. 深入浅出程序设计竞赛笔记(草稿
  5. 8.基本数据类型详细讲解-list/tuple
  6. C语言数据结构队列的插入和删除
  7. 2007年牛人牛语录
  8. 一线外包员工的生活经历
  9. 共享打印机连接报错问题汇总
  10. 用java编写注册界面_java编写一个注册界面的方法