15,979
社区成员
发帖
与我相关
我的任务
分享
BOOL NScript::GetHtmlDocFromWnd(HWND hWnd, IHTMLDocument2 **ppHtmlDoc)
{
CComQIPtr<IHTMLDocument> HtmlDoc;
CComQIPtr<IDispatch> HtmlDispath;
CComQIPtr<IHTMLWindow2> HtmlWin2;
LPFNOBJECTFROMLRESULT fnObjectFromLresult;
UINT uMessage;
DWORD_PTR dwRetVal;
HRESULT hr;
CoInitialize(NULL);
*ppHtmlDoc = NULL;
fnObjectFromLresult = (LPFNOBJECTFROMLRESULT)NSys::GetDllProcAdders("OLEACC.DLL", "ObjectFromLresult");
if(fnObjectFromLresult == NULL)
return FALSE;
uMessage = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
::SendMessageTimeout(hWnd, uMessage, 0L, 0L, SMTO_ABORTIFHUNG, 1000, &dwRetVal);
hr = fnObjectFromLresult((LRESULT)dwRetVal, IID_IHTMLDocument, 0, (void**)&HtmlDoc);
if(FAILED(hr) || HtmlDoc == NULL)
return FALSE;
hr = HtmlDoc->get_Script(&HtmlDispath);
if(FAILED(hr) || HtmlDispath == NULL)
return FALSE;
HtmlWin2 = HtmlDispath;
if(HtmlWin2 == NULL)
return FALSE;
hr = HtmlWin2->get_document(ppHtmlDoc);
if(FAILED(hr))
return FALSE;
return TRUE;
}