1、ImportsSystemImportsSystem.Runtime.InteropServicesImportsSystem.DrawingImportsSystem.Drawing.Im锾攒揉敫agingClassCameraPrivateConstWM_CAP_START=WM_USERPrivateConstWM_CAP_STOP=WM_CAP_START+68PrivateConstWM_CAP_DRIVER_CONNECT=WM_CAP_START+10PrivateConstWM_CAP_DRIVER_DISCONNECT=WM_CAP_START+11PrivateConstWM_CAP_SAVEDIB=WM_CAP_START+25PrivateConstWM_CAP_GRAB_FRAME=WM_CAP_START+60PrivateConstWM_CAP_SEQUENCE=WM_CAP_START+62PrivateConstWM_CAP_FILE_SET_CAPTURE_FILEA=WM_CAP_START+20PrivateConstWM_CAP_SEQUENCE_NOFILE=WM_CAP_START+63PrivateConstWM_CAP_SET_OVERLAY=WM_CAP_START+51PrivateConstWM_CAP_SET_PREVIEW=WM_CAP_START+50PrivateConstWM_CAP_SET_CALLBACK_VIDEOSTREAM=WM_CAP_START+6PrivateConstWM_CAP_SET_CALLBACK_ERROR=WM_CAP_START+2PrivateConstWM_CAP_SET_CALLBACK_STATUSA=WM_CAP_START+3PrivateConstWM_CAP_SET_CALLBACK_FRAME=WM_CAP_START+5PrivateConstWM_CAP_SET_SCALE=WM_CAP_START+53PrivateConstWM_CAP_SET_PREVIEWRATE=WM_CAP_START+52SubNew(ByValIAsPictureBox)o=IEndSub
2、SendMessage(M_Handle,WM_CAP_EDIT_COP孢亨槐溲Y,0,0)ReturnClipboard.GetImageEndFunctionFunctionCreat髫潋啜缅eCaptureWindow(ByValhWndParentAsPictureBox,ByValxAsInteger,ByValyAsInteger,ByValnWidthAsInteger,ByValnHeightAsInteger,ByValnCameraIDAsInteger)AsIntegerDimPreview_HandleAsIntegerPreview_Handle=capCreateCaptureWindow("Video",_WS_CHILD+WS_VISIBLE,x,y,_hWndParent.Width,hWndParent.Height,hWndParent.Handle,0)DimBOOLAsBooleanBOOL=SendMessage(Preview_Handle,WM_CAP_DRIVER_CONNECT,nCameraID,0)'ncameraid(视频只有一个为0,多个以此类推)If(BOOL=False)ThenMsgBox("没有找到视频设备!")EndIfSendMessage(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)M_Handle=Preview_HandleReturnPreview_HandleEndFunction
3、DimblnRunningAsBoolean=FalsePublicSubDisconnect()SendMessage(M_Handle,WM_CAP_DRIVER_DISCONNECT,0,0)EndSubDimblnRecordingAsBoolean=False'录像PublicSubKineScope(ByValpathAsString)IfblnRecordingThenReturnElseblnRecording=TrueEndIf'path:要保存avi文件的路径DimhBmpAsIntPtr=Marshal.StringToHGlobalAnsi(path)SendMessage(M_Handle,WM_CAP_FILE_SET_CAPTURE_FILEA,0,hBmp.ToInt64())SendMessage(M_Handle,WM_CAP_SEQUENCE,0,0)EndSubPublicSubStopKinescope()IfblnRecordingThenSendMessage(M_Handle,WM_CAP_STOP,0,0)EndIfblnRecording=FalseEndSubEndClass上面是camera.vb接口类
4、下面是实现formPublicClassCamoraFormDimcamoraAsNewCamera(PictureBox1)PrivateSubCamoraForm_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadEndSubPrivateSubCommendStart_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCommendStart.Clickcamora.CreateCaptureWindow(PictureBox1,0,0,PictureBox1.Width,PictureBox1.Height,0)EndSubPrivateSubCommendStop_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCommendStop.Clickcamora.StopKinescope()camora.Disconnect()EndSub