問題描述:
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失敗排查方法
檢查計算機本身是否安裝相應的程序,如Excel。
如果安裝了相應的程序,檢查是否兼容。
使用release而不是debug。
說明:以上排查方法是上網看到總結的,因爲自己沒遇到過,所以不確保準確性。