CoInitialize(NULL);
HRESULT hr = S_OK;
IUnknown* pUnknown=NULL;
IDispatch* pOutlook = NULL; CLSID clsid;
//wchar_t* pwstrSid=L"Outlook.Application";
wchar_t* pwstrSid=L"Word.Application";
hr = CLSIDFromProgID(pwstrSid,&clsid);
LPOLESTR strFunc = L"CreateItem";
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IUnknown,reinterpret_cast<void**>(&pUnknown));
if(SUCCEEDED(hr))
{
hr = pUnknown->QueryInterface( IID_IDispatch,(void**)&pOutlook);
pUnknown->Release();
....
}Query IDispatch 的时候失败(Word和Outlook都这样)。返回E_NOINTERFACE的错误。有没有高手知道原因?
开发环境是:Office2003
另外,我不能用#import的方式,所以各位就不要提醒我用#import了。
{
// get word document CLSID
CLSID clsidWord;
::CLSIDFromProgID(OLESTR("Word.Application"), &clsidWord); ::OleInitialize( 0 ); HRESULT hr; // start winword server
LPDISPATCH pDisp;
hr = ::CoCreateInstance(clsidWord, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&pDisp);
if( SUCCEEDED(hr) )
{
} ::OleUninitialize(); return 0;
}是OleInitialize(0 ); 不是CoInitialize(0)
我的环境是VS:2005,Office2003。不知道楼上几位老兄环境会不会有影响?
thanks for your help.