談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽
          1、聲明必要的變量

          ? hWndC : THandle;
          ? CapturingAVI : bool;

          2、定義消息

          const WM_CAP_START = WM_USER;
          const WM_CAP_STOP = WM_CAP_START + 68;
          const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
          const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
          const WM_CAP_SAVEDIB = WM_CAP_START + 25;
          const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
          const WM_CAP_SEQUENCE = WM_CAP_START + 62;
          const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
          const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+? 63 ;
          const WM_CAP_SET_OVERLAY =WM_CAP_START+? 51 ;
          const WM_CAP_SET_PREVIEW =WM_CAP_START+? 50 ;
          const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6;
          const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2;
          const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3;
          const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5;
          const WM_CAP_SET_SCALE=WM_CAP_START+? 53 ;
          const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+? 52 ;

          3、聲明函數

          function capCreateCaptureWindowA(lpszWindowName : PCHAR;
          dwStyle : longint;
          x : integer;
          y : integer;
          nWidth : integer;
          nHeight : integer;
          ParentWin : HWND;
          nId : integer): HWND;
          STDCALL EXTERNAL 'AVICAP32.DLL';

          4、FormCreate

          CapturingAVI := false;
          hWndC := 0;
          SaveDialog1.Options :=
          [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]

          5、開始顯示OpenVideo

          hWndC := capCreateCaptureWindowA('My Own Capture Window',
          WS_CHILD or WS_VISIBLE ,
          Panel1.Left,
          Panel1.Top,
          Panel1.Width,
          Panel1.Height,
          Form1.Handle,
          0);
          if hWndC <> 0 then
          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);
          SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
          OpenVideo.Enabled :=false;

          6、CloseVideo

          if hWndC <> 0 then begin
          SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
          hWndC := 0;
          OpenVideo.Enabled :=true;
          end;

          7、SaveBMP

          if hWndC <> 0 then begin
          SaveDialog1.DefaultExt := 'bmp';
          SaveDialog1.Filter := 'Bitmap files (*.bmp)|*.bmp';
          if SaveDialog1.Execute then
          SendMessage(hWndC,
          WM_CAP_SAVEDIB,
          0,
          longint(pchar(SaveDialog1.FileName)));
          end;

          8、StartAVI

          if hWndC <> 0 then begin
          SaveDialog1.DefaultExt := 'avi';
          SaveDialog1.Filter := 'AVI files (*.avi)|*.avi';
          if SaveDialog1.Execute then begin
          CapturingAVI := true;
          SendMessage(hWndC,
          WM_CAP_FILE_SET_CAPTURE_FILEA,
          0,
          Longint(pchar(SaveDialog1.FileName)));
          SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
          end;
          end;

          9、StopAVI

          if hWndC <> 0 then begin
          SendMessage(hWndC, WM_CAP_STOP, 0, 0);
          CapturingAVI := false;
          end;

          10、FormClose
          CloseVideo;

          注意上面的前提是需要安裝攝像頭的驅動程序。

          http://www.aygfsteel.com/badboyryan



          posted on 2007-06-29 15:15 壞男孩 閱讀(6053) 評論(0)  編輯  收藏 所屬分類: 生活隨筆
          主站蜘蛛池模板: 香格里拉县| 金堂县| 华容县| 民勤县| 昌乐县| 甘谷县| 高台县| 噶尔县| 色达县| 淮北市| 龙游县| 山西省| 区。| 大英县| 巨野县| 固安县| 汝阳县| 山阴县| 叙永县| 东乡族自治县| 岐山县| 黑河市| 分宜县| 德阳市| 北京市| 滁州市| 郸城县| 资阳市| 绿春县| 靖边县| 三都| 邯郸县| 准格尔旗| 通州市| 四子王旗| 新田县| 泾源县| 珠海市| 奉新县| 墨玉县| 咸宁市|