C#捕捉视频头(源码)

转载 2004年10月29日 10:33:00

C#捕捉视频头(源码)

using System;
using System.Runtime.InteropServices;

namespace Wuyin.ShoesManager
{
    /// <summary>
    /// VedioCapture 的摘要说明。
    /// </summary>
    public class VedioCapture
    {
        private int hCaptureM;
        private bool isUnLoad = false;
        public VedioCapture()
        {       
        }
        [DllImport("avicap32.dll")]
        private static extern int capCreateCaptureWindow( string strWindowName, int dwStyle, int x, int y ,int width, int height , int hwdParent, int nID );
        [DllImport("user32.dll")]
        private static extern int SendMessage( int hwnd , int wMsg, int wParam , int lParam );
        [DllImport("user32.dll")]
        private static extern int SendMessage( int hwnd , int wMsg, int wParam , string lParam );
        [DllImport("Kernel32.dll")]
        private static extern bool CloseHandle( int hObject );
        public bool Initialize( System.Windows.Forms.Control aContainer , int intWidth, int intHeight )
        {
            hCaptureM = capCreateCaptureWindow( "", 0x40000000 | 0x10000000, 0,0,intWidth,intHeight,aContainer.Handle.ToInt32() ,1 );
            if( hCaptureM == 0 ) return false;
           
            int ret = SendMessage( hCaptureM , 1034, 0,0 );
            if( ret == 0 )
            {
                CloseHandle(hCaptureM);
                return false;
            }
            //WM_CAP_SET_PREVIEW
            ret = SendMessage( hCaptureM, 1074, 1, 0 );
            if( ret == 0 )
            {
                this.UnLoad();
                return false;
            }
            //WM_CAP_SET_SCALE
            ret = SendMessage( hCaptureM, 1077, 1, 0 );
            if( ret == 0 )
            {
                this.UnLoad();
                return false;
            }
            //WM_CAP_SET_PREVIEWRATE
            ret = SendMessage( hCaptureM, 1076, 66, 0 );
            if( ret == 0 )
            {
                this.UnLoad();
                return false;
            }
            return true;
        }

        public void SingleFrameBegin()
        {
            //
            int ret = SendMessage( hCaptureM, 1094 , 0, 0 );
        }
        public void SingleFrameEnd()
        {
            //
            int ret = SendMessage( hCaptureM, 1095 , 0, 0 );
        }

        public void SingleFrameMode()
        {
            //WM_CAP_GRAB_FRAME
            int ret = SendMessage(  hCaptureM, 1084 , 0, 0 );
            //WM_CAP_SET_PREVIEW
            //int ret = SendMessage(  hCaptureM, 1074 , 0, 0 );
            //WM_CAP_SINGLE_FRAME
            //ret = SendMessage( hCaptureM, 1096 , 0, 0 );
        }
        public void PreviewMode()
        {
            int ret = SendMessage( hCaptureM, 1074 , 1, 0 );
        }       

        public void UnLoad()
        {
            int ret = SendMessage( hCaptureM, 1035, 0, 0 );
            CloseHandle( this.hCaptureM );
            isUnLoad = true;
        }

        public void CopyToClipBorad()
        {
            int ret = SendMessage(  hCaptureM, 1054, 0, 0 );
        }

        public void ShowFormatDialog()
        {
            int ret = SendMessage(  hCaptureM, 1065, 0, 0 );
        }
        public void SaveToDIB( string fileName )
        {
            int ret = SendMessage(  hCaptureM, 1049, 0, fileName );
        }

        public void ShowDisplayDialog()
        {
            int ret = SendMessage( hCaptureM, 1067, 0, 0 );
        }
        public System.Drawing.Image getCaptureImage()
        {
            System.Windows.Forms.IDataObject iData = System.Windows.Forms.Clipboard.GetDataObject();
            System.Drawing.Image retImage = null;
            if( iData !=  null )
            {
                if( iData.GetDataPresent( System.Windows.Forms.DataFormats.Bitmap ) )
                {
                    retImage = (System.Drawing.Image)iData.GetData( System.Windows.Forms.DataFormats.Bitmap );
                }
                else if( iData.GetDataPresent( System.Windows.Forms.DataFormats.Dib  ) )
                {
                    retImage = (System.Drawing.Image)iData.GetData( System.Windows.Forms.DataFormats.Dib );
                }
            }
            return retImage;
        }

        ~VedioCapture()
        {
            if( !isUnLoad )
            {
                this.UnLoad();
            }
        }
    }
}

C#捕捉视频头(源码)

using System;using System.Runtime.InteropServices;namespace Wuyin.ShoesManager{    ///     /// Vedio...
  • xdfwsl
  • xdfwsl
  • 2007年04月01日 10:16
  • 1096

C#捕捉视频头(源码)-

using System;using System.Runtime.InteropServices;namespace Wuyin.ShoesManager...{    /**////     //...
  • bulbul2006
  • bulbul2006
  • 2007年03月19日 10:04
  • 923

c#利用windowsapi捕捉屏幕图片

添加引用 using System.Data;using System.Drawing.Imaging;调用API并保存图片  [System.Runtime.InteropServices.DllI...
  • xqf222
  • xqf222
  • 2007年04月25日 02:49
  • 1296

C#异常捕捉处理

try...catch...finally异常捕捉处理 1.异常捕捉处理 try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行;否则不会执行catch里面的内容...
  • qq_33337811
  • qq_33337811
  • 2017年05月31日 16:55
  • 497

C#制作屏幕捕捉程序

随着微软.Net战略的进一步深入,各种新的技术、概念可谓层出不穷,特别是C#语言的推出,在业界产生了重大影响。C#是一门高效的语言,它既有VB的RAD特性,又不乏C++语言的高效性。最重要的它是基于....
  • hongfly126
  • hongfly126
  • 2007年06月20日 11:09
  • 947

C# 在程序焦点之外捕捉按键操作(键盘钩子的使用)

在程序中捕捉用户的按键行为很容易,但是假如程序最小化了或者隐藏到系统托盘了,这时因为程序已经失去焦点了我们想捕捉按键行为就不是那么容易了。怎么办呢?这就要使用键盘钩子了。 关于键盘钩子,下面这个网友...
  • u011014032
  • u011014032
  • 2015年05月23日 10:58
  • 3130

动态HTML创作之捕捉键盘

捕捉键盘可能是与用户交互中最有力的形式了。可以设置按下或释放任何的键来控制对象。 第一件事就是怎样初始化事件。这里是基本的初始化设置“onkeydown”事件: document.onkeydown=...
  • Suprman
  • Suprman
  • 2006年10月02日 20:43
  • 2600

c# 捕获的异常写到日志里

public static void WriteErorrLog(Exception ex) { if(ex == null) return; ...
  • server126
  • server126
  • 2010年08月06日 16:19
  • 3072

C# 实现Windows Media Encoder音视频捕捉

我的博客中讲述过WMS9,可以实现流媒体服务器,但没有WME(windows media encoder)的支持,总觉得缺少点什么,这里就讲述一下如何通过.net实现WME获取设备视频音频流,并推送到...
  • RainyLin
  • RainyLin
  • 2008年01月16日 18:21
  • 3487

FLV科普10 FLV视频头信息

VideoData的内容,同样包括VideoData Header和VideoData Body。 即VideoData Format: Video Header = | FrameType(4) |...
  • cabbage2008
  • cabbage2008
  • 2016年01月02日 22:19
  • 11652
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#捕捉视频头(源码)
举报原因:
原因补充:

(最多只允许输入30个字)