直接上代码:

'code by lichmama from cnblogs.com
'@vb6 camera control
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" _
(ByVal lpszWindowName As String, _
ByVal dwStyle As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hwndParent As Long, _
ByVal nID As Long) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long Private Const SWP_SHOWWINDOW = &H40
Private Const HWND_TOP = '摄像头显示窗口控制消息常数
Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const WS_CAPTION = &HC00000
Private Const WS_THICKFRAME = &H40000 '摄像头控制消息参数
Private Const WM_USER = &H400 '用户消息开始号
Private Const WM_CAP_CONNECT = WM_USER + '连接一个摄像头
Private Const WM_CAP_DISCONNECT = WM_USER + '断开一个摄像头的连接
Private Const WM_CAP_SET_PREVIEW = WM_USER + '使预览模式有效或者失效
Private Const WM_CAP_SET_OVERLAY = WM_USER + '使窗口处于叠加模式,也会自动地使预览模式失效。
Private Const WM_CAP_SET_PREVIEWRATE = WM_USER + '设置在预览模式下帧的显示频率
Private Const WM_CAP_GRAB_FRAME = WM_USER + '抓取摄像头当前帧,并存入缓冲区
Private Const WM_CAP_GRAB_FRAME_NOSTOP = WM_USER + '抓取摄像头当前帧,并存入缓冲区(该行为不会暂停摄像头显示)
Private Const WM_CAP_EDIT_COPY = WM_USER + '将当前图像复制到剪贴板
Private Const WM_CAP_GET_STATUS = WM_USER + '获取摄像头状态
Private Const WM_CAP_SEQUENCE = WM_USER + '开始录像,录像未结束前不会返回。
Private Const WM_CAP_STOP = (WM_USER + ) '暂停录像
Private Const WM_CAP_ABORT = (WM_USER + ) '终止录像
Private Const WM_CAP_FILE_SET_CAPTURE_FILE = WM_USER + '设置当前的视频捕捉文件
Private Const WM_CAP_File_GET_CAPTURE_FILE = WM_USER + '得到当前的视频捕捉文件 Private Type POINTAPI
x As Long
y As Long
End Type '摄像头状态结构体
Private Type CAPSTATUS
uiImageWidth As Long '// Width of the image
uiImageHeight As Long '// Height of the image
fLiveWindow As Long '// Now Previewing video?
fOverlayWindow As Long '// Now Overlaying video?
fScale As Long '// Scale image to client?
ptScroll As POINTAPI '// Scroll position
fUsingDefaultPalette As Long '// Using default driver palette?
fAudioHardware As Long '// Audio hardware present?
fCapFileExists As Long '// Does capture file exist?
dwCurrentVideoFrame As Long '// # of video frames cap'td
dwCurrentVideoFramesDropped As Long '// # of video frames dropped
dwCurrentWaveSamples As Long '// # of wave samples cap'td
dwCurrentTimeElapsedMS As Long '// Elapsed capture duration
hPalCurrent As Long '// Current palette in use
fCapturingNow As Long '// Capture in progress?
dwReturn As Long '// Error value after any operation
wNumVideoAllocated As Long '// Actual number of video buffers
wNumAudioAllocated As Long '// Actual number of audio buffers
End Type Private hCapWnd As Long Private Sub Command1_Click()
'创建显示窗口,并连接摄像头
hCapWnd = capCreateCaptureWindow("mycapWnd", WS_VISIBLE Or WS_CHILD, &, &, &, &, Me.hwnd, &)
Call SendMessage(hCapWnd, WM_CAP_CONNECT, &, ByVal &) '重新设置显示窗口的大小
Dim caps As CAPSTATUS
Call SendMessage(hCapWnd, WM_CAP_GET_STATUS, Len(caps), ByVal VarPtr(caps))
Call SetWindowPos(hCapWnd, HWND_TOP, &, &, caps.uiImageWidth, caps.uiImageHeight, SWP_SHOWWINDOW) '设置摄像头显示模式为预览及其帧率(30fps)
Call SendMessage(hCapWnd, WM_CAP_SET_PREVIEW, &, ByVal &)
Call SendMessage(hCapWnd, WM_CAP_SET_PREVIEWRATE, &, ByVal &)
End Sub Private Sub Command2_Click()
'截取摄像头显示帧,并保存到剪切板
Call SendMessage(hCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, &, ByVal &)
Call SendMessage(hCapWnd, WM_CAP_EDIT_COPY, &, ByVal &)
End Sub Private Sub Command3_Click()
'启动录像模式,并设置文件保存路径
'说明:启动录像模式后,摄像头会持续向目标文件写入,直到有终止操作发生。
' 其中终止操作包括:1、用户使用ESC键或鼠标按钮
' 2、当前应用程序退出或退出了捕获操作(WM_CAP_STOP/WM_CAP_ABORT)
' 3、本地磁盘空间不足
' *如果设置采样帧率过高,文件增长会比较快,请注意!
Call SendMessage(hCapWnd, WM_CAP_FILE_SET_CAPTURE_FILE, &, ByVal "c:\1.avi")
Call SendMessage(hCapWnd, WM_CAP_SEQUENCE, &, ByVal &)
End Sub Private Sub Command4_Click()
'终止录像行为
Call SendMessage(hCapWnd, WM_CAP_ABORT, &, ByVal &)
End Sub Private Sub Form_Unload(Cancel As Integer)
'断开摄像头连接,并销毁显示窗口
Call SendMessage(hCapWnd, WM_CAP_DISCONNECT, &, ByVal &)
Call DestroyWindow(hCapWnd)
End Sub

VB6之摄像头控制的更多相关文章

  1. unity中camera摄像头控制详解

    目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...

  2. OpenCV系列--摄像头控制的简单代码

    操作系统:windows xp 开发工具:VS2008 opencv版本:2.1.0 依赖库:OpenCV2.1\lib\highgui.lib #include "cv.h" # ...

  3. 【转载】OpenCV 摄像头控制

    参考:[OpenCV] -- 简单摄像头操作 - 代码人生 - 博客频道 - CSDN.NET http://blog.csdn.net/qiurisuixiang/article/details/8 ...

  4. C#控制操控操作多个UVC摄像头设备

    有时,我们需要在C#代码中对多个UVC摄像头进行操作,如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像头控制项目 ...

  5. C# Aforge设置摄像头视频属性和控制属性

    修改后的代码:github 一.调用windows自身摄像头属性设置窗口 使用VideoCaptureDevice对象的DisplayPropertyPage(IntPtr parentWindow) ...

  6. 通过ISAPI http协议控制海康摄像头

    一直用海康的SDK进行摄像头控制,但有时候非常不灵活,必须有X86的主机,在嵌入式上面就不行,通过写一个HTTPCLIENT可以通过ISAPI来控制海康的摄像头. 代码如下:git@github.co ...

  7. 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列

    第46章     DCMI—OV5640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  8. 第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

    第45章     DCMI—OV2640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  9. C#读写修改设置调整UVC摄像头画面-缩放

    有时,我们需要在C#代码中对摄像头的缩放进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

随机推荐

  1. PHP如何与搜索引擎Elasticsearch交互?

    一:参考官方文档 1. Elasticsearch 5.4.0英文手册:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/sear ...

  2. [大数据]-Logstash-5.3.1的安装导入数据到Elasticsearch5.3.1并配置同义词过滤

    阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置,前面介绍了ES,Kibana5.3.1的安装配置,以及IK分词的安装和同义词设置,这里主要记录L ...

  3. mac系统下给文件夹加密方法

    电脑里我们往往会有许多隐私的文件,不希望被别人看到,在过去的Windows电脑里,我们习惯性的会在文件夹中将该文件隐藏,但是这个隐藏是不安全的,遇到稍微会点电脑技术的人就可以给你解开,安全性不高,ma ...

  4. NodeJs的包漏洞扫描与漏洞测试攻击

    一个典型的Node应用可能会有几百个,甚至上千个包依赖(大部分的依赖是间接的,即下载一个包,这个包会依赖其他的好多包),所以最终的结果是,应用程序就会像是这个样子的:

  5. SmartCoder每日站立会议07

    站立会议内容     基本框架已出,首页地图功能还没有接入完全. 1.站立会议照片: 2.任务展板 3.燃尽图

  6. C#控制台或应用程序中两个多个Main()方法的可行性方案

    大多数初级程序员或学生都认为在C#控制台或应用程序中只能有一个Main()方法.但是事实上是可以有多个Main()方法的. 在C#控制台或应用程序中,在多个类中,且每个类里最多只能存在一个Main() ...

  7. FFmpeg安装(windows环境)

    ♣FFmpeg是什么? ♣FFmpeg组成 ♣下载工具 ♣安装FFmpeg ♣应用到j2ee项目 前言:学习视频编码,一定要知道雷霄骅(leixiaohua1020)的专栏 ,伟大的程序员,26岁去世 ...

  8. characterEncodingFilter作用

    package com.demo.test; import java.io.IOException; import javax.servlet.Filter; import javax.servlet ...

  9. [原创]使用logcat快速抓取android崩溃日志

    在android APP测试过程中会发生不少的crash,目前抓取日志的主流方法是通过eclipse或者eclipse的ddms组件进行捕抓,这两种方法有个缺点是启动时非常耗时.本文通过adb程序与b ...

  10. MySQL 5.7中 performance_schema 替代 show profile 命令

    本文出处:http://www.cnblogs.com/wy123/p/6979499.html show profile 命令用于跟踪执行过的sql语句的资源消耗信息,可以帮助查看sql语句的执行情 ...