子線程中CApplication::CreateDispatch失敗的解決方法

問題描述:

CApplication appExcel;
BOOL bCreateRet = appExcel.CreateDispatch("Excel.Application");

以上代碼在主線程中bCreateRet返回TRUE,在子線程中bCreateRet返回FALSE。


問題原因:

執行線程時沒有初始化。


解決辦法:

添加初始化函數。

AFX_MANAGE_STATE(AfxGetStaticModuleState());
CoInitialize(NULL);
AfxEnableControlContainer();

CApplication appExcel;
BOOL bCreateRet = appExcel.CreateDispatch("Excel.Application");


說明:小白表示不曉得初始化都做了什麼,並且只加上CoInitialize(NULL);這一句就解決了我的問題。以上解決方法來自論壇:

[多線程時的CreateDispatch問題](http://bbs.csdn.net/topics/310088635)


另:CApplication::CreateDispatch失敗排查方法

  1. 檢查計算機本身是否安裝相應的程序,如Excel。

  2. 如果安裝了相應的程序,檢查是否兼容。

  3. 使用release而不是debug。


說明:以上排查方法是上網看到總結的,因爲自己沒遇到過,所以不確保準確性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章