VB 摄像头窗口关闭的命令,但因在其他窗体中,不能用UNLOAD ME,怎么办呢?

jinchun_73 2009-01-18 12:03:11
我拼凑了一个摄像头照相代码,但照相并给IMAGE1(在“员工信息”窗体中)赋值后,用DISCONNECT 截断与摄像头的联接后,原摄像头处显示黑屏,怎么也去不掉,因为在其他窗体中,不能用UNLOAD ME ,怎么办?

以下为模块:

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 Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const WM_USER = &H400
Private Const WM_CAP_START = &H400
Private Const WM_CAP_EDIT_COPY = (WM_CAP_START + 30)
Private Const WM_CAP_DRIVER_CONNECT = (WM_CAP_START + 10)
Private Const WM_CAP_SET_PREVIEWRATE = (WM_CAP_START + 52)
Private Const WM_CAP_SET_OVERLAY = (WM_CAP_START + 51)
Private Const WM_CAP_SET_PREVIEW = (WM_CAP_START + 50)
Private Const WM_CAP_DRIVER_DISCONNECT = (WM_CAP_START + 11)

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 Preview_Handle As Long

Public Function CreateCaptureWindow( _
hWndParent As Long, _
Optional x As Long = 750, _
Optional y As Long = 120, _
Optional nWidth As Long = 320, _
Optional nHeight As Long = 240, _
Optional ncameraid As Long = 0) As Long

Preview_Handle = capCreateCaptureWindow("Video", _
WS_CHILD + WS_VISIBLE, x, y, _
nWidth, nHeight, hWndParent, 1)

SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, ncameraid, 0
SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 30, 0
SendMessage Preview_Handle, WM_CAP_SET_OVERLAY, 1, 0
SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0

CreateCaptureWindow = Preview_Handle
End Function


Public Function CapturePicture(ncapturehandle As Long) As StdPicture
Clipboard.Clear
SendMessage ncapturehandle, WM_CAP_EDIT_COPY, 0, 0
Set CapturePicture = Clipboard.GetData
End Function


Public Sub Disconnect(ncapturehandle As Long, _
Optional ncameraid = 0)

SendMessage ncapturehandle, WM_CAP_DRIVER_DISCONNECT, _
ncameraid, 0


End Sub


以下为command1 command2 的命令代码,“员工信息”为IMAGE1所在的窗体名称

Private Sub command1_click()
On Error Resume Next
If Dir$("e:\摄像头文件\kkk.jpg") = "" Then
MsgBox "请先采集照片!"
Command1.SetFocus
Else
Set Image1.Picture = LoadPicture("e:\摄像头文件\kkk.jpg")
Kill "e:\摄像头文件\kkk.jpg"
Command2.Enabled = True
Clipboard.Clear
Disconnect (Video_Handle)
Video_Handle = 0
End If
End Sub

Private Sub command2_click()
On Error Resume Next
Video_Handle = CreateCaptureWindow(员工信息.hwnd)

If Dir$("e:\摄像头文件\kkk.jpg") = "" Then
Dim x As StdPicture
Set x = CapturePicture(Video_Handle)
SavePicture x, "e:\摄像头文件\kkk.jpg"
Command2.Enabled = False
Else
Command1.SetFocus
End If

End Sub







...全文
272 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinchun_73 2009-03-08
  • 打赏
  • 举报
回复
解决了,我新建了一个窗口,专门用来照相。
jinchun_73 2009-01-18
  • 打赏
  • 举报
回复

command1 command2 的代码有一些修改,但仍不能解决问题,以下为修改后的代码:


Private Sub command1_click()
On Error Resume Next
Dim x As StdPicture
Set x = CapturePicture(Video_Handle)
Set Image1.Picture = x
Disconnect (Video_Handle)
Video_Handle = 0
Command2.Enabled = True
Command1.Enabled = False
Clipboard.Clear
End Sub

Private Sub command2_click()
On Error Resume Next
Video_Handle = CreateCaptureWindow(员工信息.hwnd)
Command2.Enabled = False
Command1.Enabled = True
End Sub
jinchun_73 2009-01-18
  • 打赏
  • 举报
回复
我是为实现在人事管理中员工信息中,用摄像头现场照相并存入SQL 库中,以便查询,但现在连照相的问题还没有解决,哪位专家能帮忙解决,感激不尽。
内容概要:本文研究了一种基于遗传算法的新型异构分布式系统任务调度算法,旨在解决异构计算环境任务分配与调度的复杂优化问题。通过Matlab代码实现该算法,充分利用遗传算法强大的全局搜索能力和鲁棒性,对任务执行时间、资源利用率、系统负载均衡等关键性能指标进行综合优化,有效提升分布式系统的整体运行效率与稳定性。研究详细阐述了算法的整体架构设计、染色体编码策略、适应度函数构造、选择机制以及交叉与变异等遗传操作的实现细节,并通过大量仿真实验验证了所提出算法相较于传统调度方法在收敛速度、解的质量和调度性能方面的显著优越性。; 适合人群:具备一定编程基础和优化算法理论知识,从事分布式计算、高性能计算、云计算资源调度或智能优化算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于高性能计算、云计算、边缘计算等异构计算平台的任务调度优化,提升资源利用效率;②为研究人员提供遗传算法在复杂组合优化问题应用的完整实现案例,深化对智能优化算法设计原理与仿真实践的理解; 阅读建议:建议读者结合提供的Matlab代码深入研读,重点理解适应度函数的设计逻辑与遗传算子的参数调优策略,并可通过更换不同的任务集和系统模型来测试算法的泛化能力与鲁棒性。
参考李林凤等(2025)一文关于农村劳动力人均受教育年限指标的构建与计算方法,整理了国31个省份总体、分性别的农村人均受教育年限数据,具体计算方法如下: 农村劳动力人均受教育年限 = (农村未上过学人数 × 1+小学学历人数 × 6+初学历人数 × 9+高专学历人数 ×12+大专及以上学历人数 × 16)/农村6岁及以上总人口 相关数据:各地区、分性别人均受教育年限数据 一、数据介绍 数据名称:国各省农村人均受教育年限 数据范围:全国31个省份 时间范围:2006-2024年 样本数量:590条 数据来源:《国人口和就业统计年鉴》、《国劳动统计年鉴》 二、数据指标 年份 省份 省份代码 农村人均受教育年限 男性-农村人均受教育年限 女性-农村人均受教育年限 6岁及以上人口 6岁及以上人口_男 6岁及以上人口_女 未上过学人口 未上过学人口_男 未上过学人口_女 小学人口 小学人口_男 小学人口_女 初人口 初人口_男 初人口_女 高人口 高人口_男 高人口_女 大专及以上人口 大专及以上人口_男 大专及以上人口_女 三、参考文献 [1]李林凤,刘杨,杨亦民.种业创新驱动农村产业融合的作用机制与空间分异效应[J].广东财经大学学报,2025,40(6):97-109. [2]徐小阳,李洁,金丽馥.普惠金融对农村教育贫困的纾解效应[J].国农村经济,2020,(9):41-64.

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧