我在使用C ++ 6.0中的get_script
方法并在带有IE 8的Windoxs XP中运行应用程序时遇到问题。编译没有问题。在运行时我总是遇到异常。
get_all
,get_Scripts
和get_tagname
等其他方法可以正常使用。问题只出在这种方法上,但我必须用它来运行C ++的javascript代码。
我的问题是我的代码出了什么问题:
try{
lpDispatch = GetHtmlDocument();
if(lpDispatch==NULL)
{
log.LogError("Actions::lpDispatch a NULL");
return;
}
ASSERT(lpDispatch);
hr=lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&lpHtmlDocument2);
log.LogDebug("QueryInterface() result ", hr);
if((hr!=S_OK) || (lpHtmlDocument==NULL))
{
log.LogError("Actions::lpHtmlDocument a NULL");
return;
}
ASSERT(lpHtmlDocument);
log.LogDebug("----------------------- TESTE JSCRIPT BEGIN --------------------------------");
OLECHAR * bstrMember =L"LocalSubmit()";
log.LogDebug("----------------------- X --------------------------");
CComPtr<IHTMLElement> spElement;
BSTR bstr;
log.LogDebug("----------------------- X -- 0");
hr = lpHtmlDocument2->get_activeElement(&spElement);
log.LogDebug("----------------------- X -- 01");
spElement->get_tagName(&bstr);
log.LogDebug("----------------------- X -- 02");
log.LogDebug(bstr);
IDispatch* pDisp = NULL;
if(lpHtmlDocument2 == NULL)
{
log.LogDebug("----------------------- X -- ERRO");
}
log.LogDebug("----------------------- X -- 04");
hr = lpHtmlDocument2->get_Script(&pDisp);
log.LogDebug("----------------------- X -- 05");
if(FAILED(hr))
{
log.LogDebug("GetIDsOfNames(2) Invoke", hr);
}
else
log.LogDebug("GetIDsOfNames(2) Sucess");
log.LogDebug("----------------------- X -- 1", hr);
ATLASSERT(SUCCEEDED(hr));
DISPID dispid = NULL;
hr = spScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr))
{
log.LogDebug("GetIDsOfNames(2) Invoke", hr);
}
else
log.LogDebug("GetIDsOfNames(2) Sucess");
}
catch (...)
{
log.LogError("Actions:: EXCEPTION ");
}
我们得到以下输出:
DEBUG: ----------------------- TESTE JSCRIPT BEGIN --------------------------------
DEBUG: ----------------------- X --------------------------
DEBUG: ----------------------- X -- 0
DEBUG: ----------------------- X -- 01
DEBUG: ----------------------- X -- 02
DEBUG: BODY
DEBUG: ----------------------- X -- 04
ERROR: Actions:: EXCEPTION
祝你好运, 米格尔