USB摄像头拍照程序,程序第一次运行能显示摄像头画面和拍照,第二次运行程序PictureBox1空白,但程序没报错。

问题描述

窗体里有一个PictureBox1用来显示摄像头画面和Button1用来拍照现在的问题是程序第一次运行能显示摄像头画面和拍照,第二次运行程序PictureBox1空白,但程序没报错。有没有大大能帮忙说下问题出在哪里,代码里应该怎么改?Form1.vb下的代码ImportsSystem.Runtime.InteropServicesPublicClassForm1ConstWM_CAP_START=&H400SConstWS_CHILD=&H40000000ConstWS_VISIBLE=&H10000000ConstWM_CAP_DRIVER_CONNECT=WM_CAP_START+10ConstWM_CAP_DRIVER_DISCONNECT=WM_CAP_START+11ConstWM_CAP_EDIT_COPY=WM_CAP_START+30ConstWM_CAP_SEQUENCE=WM_CAP_START+62ConstWM_CAP_FILE_SAVEAS=WM_CAP_START+23ConstWM_CAP_SET_SCALE=WM_CAP_START+53ConstWM_CAP_SET_PREVIEWRATE=WM_CAP_START+52ConstWM_CAP_SET_PREVIEW=WM_CAP_START+50ConstSWP_NOMOVE=&H2SConstSWP_NOSIZE=1ConstSWP_NOZORDER=&H4SConstHWND_BOTTOM=1DimhWndAsIntegerDeclareFunctioncapGetDriverDescriptionALib"avicap32.dll"(ByValwDriverIndexAsShort,ByVallpszNameAsString,ByValcbNameAsInteger,ByVallpszVerAsString,ByValcbVerAsInteger)AsBooleanDeclareFunctioncapCreateCaptureWindowALib"avicap32.dll"(ByVallpszWindowNameAsString,ByValdwStyleAsInteger,ByValxAsInteger,ByValyAsInteger,ByValnWidthAsInteger,ByValnHeightAsShort,ByValhWndAsInteger,ByValnIDAsInteger)AsIntegerDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsInteger,ByValMsgAsInteger,ByValwParamAsInteger,<Runtime.InteropServices.MarshalAs(UnmanagedType.AsAny)>ByVallParamAsObject)AsIntegerDeclareFunctionSetWindowPosLib"user32"Alias"SetWindowPos"(ByValhwndAsInteger,ByValhWndInsertAfterAsInteger,ByValxAsInteger,ByValyAsInteger,ByValcxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)AsIntegerDeclareFunctionDestroyWindowLib"user32"(ByValhndwAsInteger)AsBooleanPrivateSubPreviewVideo(ByValpbCtrlAsPictureBox)hWnd=capCreateCaptureWindowA(0,WS_VISIBLEOrWS_CHILD,0,0,0,0,pbCtrl.Handle.ToInt32,0)IfSendMessage(hWnd,WM_CAP_DRIVER_CONNECT,0,0)ThenSendMessage(hWnd,WM_CAP_SET_SCALE,True,0)SendMessage(hWnd,WM_CAP_SET_PREVIEWRATE,30,0)SendMessage(hWnd,WM_CAP_SET_PREVIEW,True,0)SetWindowPos(hWnd,HWND_BOTTOM,0,0,pbCtrl.Width,pbCtrl.Height,SWP_NOMOVEOrSWP_NOZORDER)ElseDestroyWindow(hWnd)EndIfEndSubPrivateSubForm1_Load(senderAsSystem.Object,eAsSystem.EventArgs)HandlesMyBase.LoadPreviewVideo(PictureBox1)EndSubPrivateSubButton1_Click(senderAsSystem.Object,eAsSystem.EventArgs)HandlesButton1.ClickDimdataAsIDataObjectDimbmapAsImageSendMessage(hWnd,WM_CAP_EDIT_COPY,0,0)data=Clipboard.GetDataObject()IfdataIsNothingThenExitSubIfdata.GetDataPresent(GetType(System.Drawing.Bitmap))Thenbmap=CType(data.GetData(GetType(System.Drawing.Bitmap)),Image)bmap.Save("d:b.bmp",System.Drawing.Imaging.ImageFormat.Bmp)MsgBox("完成")EndIfEndSubEndClass

解决方案

本帖最后由 ilshanghai 于 2012-03-24 15:17:23 编辑
解决方案二:
第二次是怎么运行的?是点击button还是重启程序?
解决方案三:
引用1楼chinajiyong的回复:

第二次是怎么运行的?是点击button还是重启程序?

重新启动调试,之后PictureBox1空白,拍照也不能拍了。
解决方案四:
整理一下再看ImportsSystem.Runtime.InteropServicesPublicClassForm1ConstWM_CAP_START=&H400SConstWS_CHILD=&H40000000ConstWS_VISIBLE=&H10000000ConstWM_CAP_DRIVER_CONNECT=WM_CAP_START+10ConstWM_CAP_DRIVER_DISCONNECT=WM_CAP_START+11ConstWM_CAP_EDIT_COPY=WM_CAP_START+30ConstWM_CAP_SEQUENCE=WM_CAP_START+62ConstWM_CAP_FILE_SAVEAS=WM_CAP_START+23ConstWM_CAP_SET_SCALE=WM_CAP_START+53ConstWM_CAP_SET_PREVIEWRATE=WM_CAP_START+52ConstWM_CAP_SET_PREVIEW=WM_CAP_START+50ConstSWP_NOMOVE=&H2SConstSWP_NOSIZE=1ConstSWP_NOZORDER=&H4SConstHWND_BOTTOM=1DimhWndAsIntegerDeclareFunctioncapGetDriverDescriptionALib"avicap32.dll"(ByValwDriverIndexAsShort,ByVallpszNameAsString,ByValcbNameAsInteger,ByVallpszVerAsString,ByValcbVerAsInteger)AsBooleanDeclareFunctioncapCreateCaptureWindowALib"avicap32.dll"(ByVallpszWindowNameAsString,ByValdwStyleAsInteger,ByValxAsInteger,ByValyAsInteger,ByValnWidthAsInteger,ByValnHeightAsShort,ByValhWndAsInteger,ByValnIDAsInteger)AsIntegerDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsInteger,ByValMsgAsInteger,ByValwParamAsInteger,<Runtime.InteropServices.MarshalAs(UnmanagedType.AsAny)>ByVallParamAsObject)AsIntegerDeclareFunctionSetWindowPosLib"user32"Alias"SetWindowPos"(ByValhwndAsInteger,ByValhWndInsertAfterAsInteger,ByValxAsInteger,ByValyAsInteger,ByValcxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)AsIntegerDeclareFunctionDestroyWindowLib"user32"(ByValhndwAsInteger)AsBooleanPrivateSubPreviewVideo(ByValpbCtrlAsPictureBox)hWnd=capCreateCaptureWindowA(0,WS_VISIBLEOrWS_CHILD,0,0,0,0,pbCtrl.Handle.ToInt32,0)IfSendMessage(hWnd,WM_CAP_DRIVER_CONNECT,0,0)ThenSendMessage(hWnd,WM_CAP_SET_SCALE,True,0)SendMessage(hWnd,WM_CAP_SET_PREVIEWRATE,30,0)SendMessage(hWnd,WM_CAP_SET_PREVIEW,True,0)SetWindowPos(hWnd,HWND_BOTTOM,0,0,pbCtrl.Width,pbCtrl.Height,SWP_NOMOVEOrSWP_NOZORDER)ElseDestroyWindow(hWnd)EndIfEndSubPrivateSubForm1_Load(senderAsSystem.Object,eAsSystem.EventArgs)HandlesMyBase.LoadPreviewVideo(PictureBox1)EndSubPrivateSubButton1_Click(senderAsSystem.Object,eAsSystem.EventArgs)HandlesButton1.ClickDimdataAsIDataObjectDimbmapAsImageSendMessage(hWnd,WM_CAP_EDIT_COPY,0,0)data=Clipboard.GetDataObject()IfdataIsNothingThenExitSubIfdata.GetDataPresent(GetType(System.Drawing.Bitmap))Thenbmap=CType(data.GetData(GetType(System.Drawing.Bitmap)),Image)bmap.Save("d:b.bmp",System.Drawing.Imaging.ImageFormat.Bmp)MsgBox("完成")EndIfEndSubEndClass

解决方案五:
程序是不是没有安全退出?你看看进程里是不是有多个和你程序名一样的进程,或者在不运行程序的情况下去我的电脑里打开摄像头设备,看看能不能正常打开。上面步骤的目的是检查是否有程序占用了你的摄频设备。因为视频设备是独占使用的。在你使用摄像头之前要保证没有被其它进程占用。
解决方案六:
我的问题也是一样的,请问解决了吗?我的是每次重启之后就还能再运行一次。感觉是进程没有释放,但是又找不到!

时间: 2024-08-27 03:49:36

USB摄像头拍照程序,程序第一次运行能显示摄像头画面和拍照,第二次运行程序PictureBox1空白,但程序没报错。的相关文章

android程序,eclipse没报错,但是运行会意外停止

问题描述 android程序,eclipse没报错,但是运行会意外停止 本人刚开始学习android,跟着书写了个程序,这个程序是会有一个东西随着手指拖动而移动,编译完没有问题,但是在手机上运行的时候却是意外停止,错误显示在了MainActivity的第27行,我真不知道哪里错,代码和书上写的一模一样,求大神指导 MainActivity的代码: package com.example.test34; import android.app.Activity; import android.os.

新手-android程序,eclipse没报错,但是运行会意外停止

问题描述 android程序,eclipse没报错,但是运行会意外停止 本人刚开始学习android,跟着书写了个程序,这个程序是会有一个东西随着手指拖动而移动,编译完没有问题,但是在手机上运行的时候却是意外停止,代码和书上写的一模一样,求大神指导 DrawView.java的代码:/** * */package com.example.customview; import android.content.Context;import android.graphics.Canvas;import

androidlogcat问题-android程序,eclipse没报错,但是运行会意外停止

问题描述 android程序,eclipse没报错,但是运行会意外停止 我是一个初学android者,很多简单的问题大家都看着很简单而我不知道为什么,所以希望耐心的大神帮忙回答一下!我很着急~~~ 这是OtherActivity.java public class OtherActivity extends MainActivity { private Button btn1; private TextView myTextView = null; private ListView listVi

web程序运行,浏览器弹出一个提示null的弹出框,但是控制台没有报错

问题描述 web程序运行,浏览器弹出一个提示null的弹出框,但是控制台没有报错 如题web程序运行,浏览器弹出一个提示null的弹出框,但是控制台没有报错 解决方案 浏览器弹窗肯定是你的js中写了alert()了,而且你的弹出的内容为空 解决方案二: 看看那里弹出来的!一步步调试跟踪下! 解决方案三: 肯定是你哪里写了alert了,只能调试跟踪了

开发的程序在visual studio上没报错 要在PDA上运行时直接退出

问题描述 开发的程序在visualstudio上没报错要在PDA上运行时直接退出新手不知道是什么原因 解决方案 解决方案二:新手你好,就通过你现在给出的这句话纳德拉都不知道是什么原因解决方案三:你可以调试看看,设置断点之后,部署到PDA之后,在PDA上面运行你的程序,然后调试,不就清楚了吗?解决方案四:是不是开发的架构不对,PDA好像是WINCE吧

问题-刚开始学习java ,自己写了一个聊天小程序,没报错但是有毛病,希望能帮忙问一下

问题描述 刚开始学习java ,自己写了一个聊天小程序,没报错但是有毛病,希望能帮忙问一下 刚开始学习java ,自己写了一个聊天小程序,没有报任何错误.测试时打开3个聊天小窗口 A,B,C,在A中输入文字,只在B中显示出来了,而且显示出了三句相同语句.查了好几个小时都没有查出来,希望高手能帮帮忙,看看是怎么回事,并且告诉我是通过什么方法找出来的. 以下是客户端和服务器端代码 客户端: import java.awt.*; import java.awt.event.*; import java

c语言-C 程序没报错,就是调试的时候出现了中断,还请帮忙改正一下

问题描述 C 程序没报错,就是调试的时候出现了中断,还请帮忙改正一下 #include #include #include using namespace std; struct A{ //先来先服务算法从这里开始 char name[10]; float arrivetime; float servicetime; float starttime; float finishtime; float zztime; float dqzztime; float avzztime; float avd

android-Android 开发的程序eclipse没报错,但意外停止

问题描述 Android 开发的程序eclipse没报错,但意外停止 目的是编写一个单点触摸用户输入的例子,以下是程序代码 package com.example.ontouchlistenerdemo; import android.app.Activity; import android.content.Context; import android.content.res.AssetManager; import android.graphics.*; import android.os.

初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。

问题描述 初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点. import java.util.Scanner; class Yanzheng{ private String n; private String p; public void setNa(String na){ this.n = na; } public void setPa(String pa){ this.p = pa; } public String getNa(){ return n;