报错:Unhandled exception in Tester.exe: 0xC0000005: Access Violation.源码:
_Application *pWordApp = NULL;
Documents *pWordDocs = NULL;
_Document *pWordDoc = NULL;
Selection *pWordSel = NULL;
Range *pWordRange = NULL; HRESULT hr = ::CoInitialize(NULL);
if(SUCCEEDED(hr))
{
CLSID clsid;
CLSIDFromProgID(L"Word.Application", &clsid); hr = ::CoCreateInstance(clsid,
NULL,
CLSCTX_SERVER,
__uuidof(_Application),
(LPVOID*)&pWordApp); if(SUCCEEDED(hr))
{
COleVariant vOpt1(DISP_E_PARAMNOTFOUND, VT_ERROR),
vOpt2(DISP_E_PARAMNOTFOUND, VT_ERROR),
vOpt3(DISP_E_PARAMNOTFOUND, VT_ERROR),
vOpt4(DISP_E_PARAMNOTFOUND, VT_ERROR);
pWordDocs = pWordApp->GetDocuments();
pWordDoc = pWordDocs->Add();//<-----这句时出错
pWordSel = pWordApp->GetSelection(); pWordSel->MoveStart();
pWordSel->InsertAfter("Test Word Automation");

COleVariant varFN("E:\\ttt.doc");
pWordDoc->SaveAs(&varFN); pWordApp->Release();
pWordDocs->Release();
pWordDoc->Release();
pWordSel->Release();
// pWordRange->Release();
}

::CoUninitialize();
}

解决方案 »

  1.   

    乱了,重贴报错:Unhandled exception in Tester.exe: 0xC0000005: Access Violation.源码:
    _Application *pWordApp = NULL;
    Documents *pWordDocs = NULL;
    _Document *pWordDoc = NULL;
    Selection *pWordSel = NULL;
    Range *pWordRange = NULL; HRESULT hr = ::CoInitialize(NULL);
    if(SUCCEEDED(hr))
    {
    CLSID clsid;
    CLSIDFromProgID(L"Word.Application", &clsid); hr = ::CoCreateInstance(clsid,
    NULL,
    CLSCTX_SERVER,
    __uuidof(_Application),
    (LPVOID*)&pWordApp); if(SUCCEEDED(hr))
    {
    COleVariant vOpt1(DISP_E_PARAMNOTFOUND, VT_ERROR),
    vOpt2(DISP_E_PARAMNOTFOUND, VT_ERROR),
    vOpt3(DISP_E_PARAMNOTFOUND, VT_ERROR),
    vOpt4(DISP_E_PARAMNOTFOUND, VT_ERROR);
    pWordDocs = pWordApp->GetDocuments();
    pWordDoc = pWordDocs->Add();//<-----这句时出错
    pWordSel = pWordApp->GetSelection(); pWordSel->MoveStart();
    pWordSel->InsertAfter("Test Word Automation");

    COleVariant varFN("E:\\ttt.doc");
    pWordDoc->SaveAs(&varFN); pWordApp->Release();
    pWordDocs->Release();
    pWordDoc->Release();
    pWordSel->Release();
    // pWordRange->Release();
    }

    ::CoUninitialize();
    }
      

  2.   

    跟踪一下,是不是最后一句:::CoUninitialize();出错?
      

  3.   

    ::CoUninitialize();好像不需要明确卸载的,应用程序,会自己处理的,而且com是用的引用技术的方式,所以不用担心这个问题
      

  4.   

    pWordDoc = pWordDocs->Add();//<-----这句时出错我都标明了,是这句出错嘛,真是的
      

  5.   

    你这个pWordDocs指针有问题,看看是否是有效的指针
      

  6.   

    pWordDocs 是否为null,跟踪调试一下就知道出错的原因了
      

  7.   

    跟踪过pWordApp和pWordDocs都不为null,也不是0xcccccccc,都是可用的
      

  8.   

    pWordDocs = pWordApp->GetDocuments();
    的返回值 是空的,或许是 GetDocuments()根本就是返回NULL?
      

  9.   

    GetDocuments()没有返回NULL
    pWordDocs不是NULL
    但是其IDispatch的[0]--[2]都是错误的
    不知道为什么会这样