亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi編程控制攝像頭

2019-11-18 18:04:16
字體:
來源:轉載
供稿:網友

你的電腦有沒有攝像頭?看到別人用QQ玩視屏你會不會去想怎么實現的?
這里介紹使用DELPHI使用MSAVICAP32.DLL就可輕松的實現對攝像頭編程,
如果再加上你的網絡編程水平,實現一個視屏聊天就不成什么問題了。
看看下面代碼的代碼:

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

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

上面的代碼就是我們主要用到的一個函數和常量的定義。

好了,打開你的Delphi,新建一個工程,將上面的定義加上吧。

新建一個窗口,放個Panel上去,添加一個按鈕,Caption設置為"開始"
這里需要定義一個全局變量,var hWndC : THandle;

開始按鈕代碼如下:

begin
hWndC := capCreateCaptureWindowA(‘My Own Capture Window‘,WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,Form1.Handle,0);

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
begin
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);
end;
F9運行一下,怎么樣,是不是可以看到攝像頭的視屏了?

那怎么停下來?再加個按鈕caption設置成"停止"
代碼如下:
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC := 0;
end;

視屏截到了,怎么把它給保存下來呢?

下面按兩種方式保存,一個是BMP靜態圖,一個是AVI動畫。

再放三個按鈕到窗體上去,caption分別設置成"保存BMP"、"開始錄像"、"停止錄像"
三個按鈕的代碼分別如下:

//
保存BMP
if hWndC <> 0 then begin
SendMessage(hWndC,WM_CAP_SAVEDIB,0,longint(pchar(‘c://test.bmp‘)));
end;

//
開始錄像
if hWndC <> 0 then
begin
SendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0, Longint(pchar(‘c://test.avi‘)));
SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
end;

//
停止錄像
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_STOP, 0, 0);
end;

再運行看看吧。??梢员4鎺讖垐D看看,也可以錄成AVI以后慢慢欣賞。

程序運行效果: [ 相關貼圖 ]


完整的程序代碼如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
hWndC : THandle;
public
{ Public declarations }
end;

var
Form1: TForm1;


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

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


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
hWndC := capCreateCaptureWindowA(‘My Own Capture Window‘,WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,Form1.Handle,0);

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
begin
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);
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC := 0;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if hWndC <> 0 then begin
SendMessage(hWndC,WM_CAP_SAVEDIB,0,longint(pchar(‘c://test.bmp‘)));
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if hWndC <> 0 then
begin
SendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0, Longint(pchar(‘c://test.avi‘)));
SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_STOP, 0, 0);
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
end;
end;

end.



如果電腦沒有攝像頭,但又想看看程序的效果,可以么?
呵呵,當然可以,找個虛擬攝像頭不就搞定,大家可以試試SoftCam這個軟件,它是一個名副其實的軟件攝像機,
能模擬成為“真實的”攝像機,提醒一下各位,大家可不要用這個東東用在QQ,MSN等聊天軟件上欺騙MMGG啊。


關于攝像頭編程,大家也可以看看這組VCL組件DSPack,DSPack是一套使用微軟Direct ShowDirectX技術的類和組件,設計工作于DirectX 9,支持系統Win9X, ME, 2000Windows xp
好了,就介紹這些了,至于視屏聊天怎么實現,就看你的了,無非是按數據壓縮傳輸給對方,顯示出來,不過話又說回來,看似簡單,實現起來還有些難度的。


上一篇:防止全局hook入侵Delphi版,2000以上系統適用(part1)

下一篇:用Delphi創建服務程序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲日本欧美中文幕| 清纯唯美亚洲综合| 亚洲国产91色在线| 日韩黄在线观看| 亚洲国产精品久久精品怡红院| 国产精品福利网站| 热久久免费视频精品| 午夜精品美女自拍福到在线| 亚洲日韩欧美视频| 亚洲国产精品久久久久| 国产精品福利小视频| 欧美巨大黑人极品精男| 国产精品高清网站| 国产一区二区三区在线视频| 欧美巨猛xxxx猛交黑人97人| 国产精品色午夜在线观看| 国产成人亚洲精品| 亚洲深夜福利视频| 夜夜嗨av色综合久久久综合网| 91精品国产色综合久久不卡98| 91亚洲va在线va天堂va国| 国产精品久久久久免费a∨大胸| 成人a视频在线观看| 亚洲一区亚洲二区亚洲三区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲欧美日韩第一区| 日韩乱码在线视频| 欧美国产日韩中文字幕在线| 久久影院资源站| 久久久久久尹人网香蕉| 中文字幕日韩欧美在线视频| 亚洲国产精品热久久| 国产成人精品在线观看| 亚洲男人av在线| 日本高清+成人网在线观看| 精品久久中文字幕久久av| 在线电影欧美日韩一区二区私密| 亚洲精品资源在线| 国产一区二区三区日韩欧美| 国产伦精品一区二区三区精品视频| 久久99国产综合精品女同| 国产精品狼人色视频一区| 国产91精品高潮白浆喷水| 国产91精品网站| 亚洲国模精品一区| 色老头一区二区三区| 51久久精品夜色国产麻豆| 久久成人精品一区二区三区| 国产精品揄拍500视频| 色与欲影视天天看综合网| 波霸ol色综合久久| 国内精品国产三级国产在线专| 亚洲色图在线观看| 欧美精品videosex极品1| 色综合亚洲精品激情狠狠| 欧美在线一区二区视频| 日本免费一区二区三区视频观看| 欧美专区福利在线| 欧美亚洲另类视频| 亚洲福利视频网站| 国产盗摄xxxx视频xxx69| 精品国产乱码久久久久酒店| 欧美精品中文字幕一区| 亚洲第一精品自拍| 久久天天躁狠狠躁夜夜躁2014| 国产精品永久免费在线| 欧日韩不卡在线视频| 免费成人高清视频| 国产欧亚日韩视频| 日韩精品在线视频美女| 中文字幕亚洲国产| 亚洲欧美综合区自拍另类| 欧美成人剧情片在线观看| www.久久久久久.com| 亚洲欧美国产日韩天堂区| 久久久亚洲网站| 国产精品国产亚洲伊人久久| 日韩av在线免费观看| 欧美日韩成人在线视频| 国产精品视频精品视频| 日韩精品999| 动漫精品一区二区| 久久久久久美女| 欧美成人h版在线观看| 国产美女精品免费电影| 97在线视频国产| 亚洲伊人成综合成人网| 91性高湖久久久久久久久_久久99| 亚洲欧洲偷拍精品| 亚洲精品国产欧美| 91精品国产高清久久久久久久久| 久久久免费电影| 亚洲成年人在线播放| 精品国产一区久久久| 国产精品欧美激情在线播放| 国产精品久久久久久久久久| 麻豆国产va免费精品高清在线| 久久九九精品99国产精品| 日韩精品视频免费在线观看| 最近中文字幕mv在线一区二区三区四区| 中文字幕欧美在线| 成人激情黄色网| 久久99青青精品免费观看| 欧美亚洲日本网站| 国产欧美日韩免费| 韩国精品美女www爽爽爽视频| 91在线视频精品| 91精品国产亚洲| 欧美日韩激情美女| 一区二区三区无码高清视频| 深夜成人在线观看| 日韩久久午夜影院| 欧美成人久久久| 精品视频—区二区三区免费| 国产亚洲欧洲高清| 国产精品www色诱视频| 久久亚洲精品一区| 国产精品一区二区av影院萌芽| 日韩精品亚洲视频| 日韩欧美999| 亚洲大胆人体av| 91丨九色丨国产在线| 国产成人涩涩涩视频在线观看| 欧美日韩一区二区三区| 日韩av大片免费看| 91精品国产沙发| 欧美午夜宅男影院在线观看| 亚洲精品中文字幕有码专区| 成人黄色av播放免费| 色综合久久精品亚洲国产| 亚洲精品电影在线观看| 国产精品高潮粉嫩av| 国产精品高潮呻吟久久av黑人| 美日韩精品视频免费看| 欧美日韩午夜视频在线观看| 在线国产精品播放| 欧美高清性猛交| 国产精品v片在线观看不卡| 亚洲国产三级网| 日韩在线观看av| 亚洲人a成www在线影院| 在线激情影院一区| 在线成人免费网站| 国产成人一区二区| 欧美激情三级免费| 亚洲自拍小视频免费观看| 久久久91精品国产| 成人国产亚洲精品a区天堂华泰| 国产日韩专区在线| 中文字幕av一区二区| 2019中文字幕全在线观看| 91av在线免费观看视频| 亚洲欧洲中文天堂| 色综合色综合久久综合频道88| 中文欧美日本在线资源| 日韩美女在线播放| 亚洲精品久久久久中文字幕二区| 欧美大片va欧美在线播放| 国产一区二区av| 欧美一区二区色| 日韩中文字幕网站| 国产精品自拍小视频| 亚洲第一视频网站| 欧美精品第一页在线播放|