[問題] directshow 的問題

看板C_and_CPP (C/C++)作者 (吳)時間16年前 (2010/04/06 18:20), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 這是在msdn上的一小段程式碼 我執行時總是得到Error Creating Device Enumerator 表示我的下面這行沒有執行成功 hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum); 這是為什麼呢? 我有跑過它上面的sample AMCap ,是可以跑的 表示這同樣的一行程式碼在我的電腦上可以正常執行 但是為什麼像下面這樣子寫就不能正常執行了呢? 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++2008 windows vista 有問題的code: (請善用置底文標色功能) #include "stdafx.h" #include <dshow.h> #pragma comment(lib, "Strmiids.lib") void ErrMsg(LPTSTR szFormat,...); HWND ghwndApp=0; int main(int argc, _TCHAR* argv[]) { // Create the System Device Enumerator. HRESULT hr; ICreateDevEnum *pSysDevEnum = NULL; hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum); if (FAILED(hr)) { ErrMsg(TEXT("Error Creating Device Enumerator")); } } void ErrMsg(LPTSTR szFormat,...) { static TCHAR szBuffer[2048]={0}; const size_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer[0]); const int LASTCHAR = NUMCHARS - 1; // Format the input string va_list pArgs; va_start(pArgs, szFormat); // Use a bounded buffer size to prevent buffer overruns. Limit count to // character size minus one to allow for a NULL terminating character. HRESULT hr = StringCchVPrintf(szBuffer, NUMCHARS - 1, szFormat, pArgs); va_end(pArgs); // Ensure that the formatted string is NULL-terminated szBuffer[LASTCHAR] = TEXT('\0'); MessageBox(ghwndApp, szBuffer, NULL, MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL); } 補充說明: 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.11.137.119

04/06 19:19, , 1F
要使用com 元件 要先呼叫 CoInitialize() 請查msdn
04/06 19:19, 1F

04/06 19:53, , 2F
感謝
04/06 19:53, 2F
文章代碼(AID): #1BkmhZx6 (C_and_CPP)
文章代碼(AID): #1BkmhZx6 (C_and_CPP)