談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持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)  編輯  收藏 所屬分類: 生活隨筆
          主站蜘蛛池模板: 鄂州市| 双流县| 凤城市| 阳春市| 阿鲁科尔沁旗| 昌宁县| 宜章县| 北京市| 桃江县| 徐闻县| 林芝县| 晴隆县| 江津市| 长治县| 临泉县| 玛沁县| 滨海县| 保德县| 崇州市| 台北县| 江都市| 许昌市| 石楼县| 衡东县| 措勤县| 云和县| 益阳市| 万宁市| 威信县| 报价| 卢湾区| 德清县| 茌平县| 许昌市| 谷城县| 上虞市| 葵青区| 陆川县| 龙南县| 方正县| 股票|