/// <summary> /// 检查是否有视频设备 /// </summary> /// <returns></returns> public bool CheckWebcamExist() { byte[] lpszName = new byte[100]; byte[] lpszVer = new byte[100]; VideoAPI.capGetDriverDescription(0, lpszName, 100, lpszVer, 100); caphwnd = VideoAPI.capCreateCaptureWindow(lpszName, VideoAPI.WS_CHILD | VideoAPI.WS_VISIBLE, 0, 0, this.width, this.height, this.controlhwnd, 1); if (caphwnd == null) { return(false); } int index = 0; bool isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0); while (!isconnect) { isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0); if (++index <= 10) { continue; } } if (isconnect == false) { VideoAPI.CloseHandle(caphwnd); return(false); } else { VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_DISCONNECT, 0, 0); return(true); } }
/// <summary> /// 启动视频设备 /// </summary> /// <returns></returns> public bool StartWebcam() { byte[] lpszName = new byte[100]; byte[] lpszVer = new byte[100]; VideoAPI.capGetDriverDescription(0, lpszName, 100, lpszVer, 100); caphwnd = VideoAPI.capCreateCaptureWindow(lpszName, VideoAPI.WS_CHILD | VideoAPI.WS_VISIBLE, 0, 0, this.width, this.height, this.controlhwnd, 1); if (caphwnd == null) { return(false); } //解决在Win7系统下摄像头获取不到问题 int index = 0; bool isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0); while (!isconnect) { isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0); if (++index <= 10) { continue; } } if (isconnect == false) { VideoAPI.CloseHandle(caphwnd); return(false); } if (VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_SET_PREVIEWRATE, 66, 0) == false) { return(false); } if (VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_SET_PREVIEW, true, 0) == false) { return(false); } if (VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_SET_SCALE, 1, 0) == false) { return(false); } isstart = true; return(true); }