CLSID clsid;
Word::_ApplicationPtr pWordApp;
Word::DocumentsPtr pDocs;
CLSIDFromProgID(L"Word.Application",&clsid);
pWordApp.CreateInstance(clsid);
pDocs = pWordApp->GetDocuments();
CComVariant FileName(_T("D:\\123.doc"));//打開word檔案
IDispatch *pDispatchDoc = pDocs->Open(&FileName));
CComPtr <Word::_Document> m_comptrActiveDoc = CComQIPtr<_Document>(pDispatchDoc);//得到document
int GetParagaphCount()
{
CComQIPtr<Paragraphs> pParagraphs = m_comptrActiveDoc->GetParagraphs();
int nCount = -1;
if (pParagraphs != NULL)
{
nCount = pParagraphs->GetCount();//這句話有時候會阻塞
}
}
CString GetWholeString()
{
if (m_comptrActiveDoc->GetActiveWindow() != NULL)
{
CComQIPtr<Panes> pPanes = m_comptrActiveDoc->GetActiveWindow()->GetPanes();
if (pPanes != NULL)
{
CComQIPtr<Selection> pSel(pPanes->Item(1)->GetSelection());
if (pSel != NULL)
{
CComQIPtr<Range> pRange(pSel->GetRange());
if (pRange != NULL)
{
HRESULT hr = pRange->WholeStory();
if(SUCCEEDED(hr))
{
strRet = (char*)(pRange->GetText());
}
}
}
}
}
}
以上是我現在用的操作word的部分代碼。在實際程序中,是打開word檔案,然后有其他機制觸發呼叫word的介面獲取總段落數或獲取所有文本。
實際運行程序中,發現,程式運行三四個小時以后,介面有時候就會阻塞到里面(標紅的陳述句),造成主界面全部卡死。
各位大神幫忙看看,有可能是什么原因造成的,怎么解決啊。
uj5u.com熱心網友回復:
除錯模式運行, 卡死的時候, 暫停程式, 看看各執行緒的情況, 是否由例外(Except)等資訊同時任務管理器關注下記憶體,句柄、GDI數的變化,看看是否有記憶體、資源泄漏
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/205061.html
