こんにちは、非互換モードで IE9 を使用しています。
ブラウザー側から JS 変数値を読み取るために、次のようなことを行っています。
ComPtr<IDispatch> disp;
m_spBrowser->get_Document(&disp);
CComQIPtr<IHTMLDocument2> htmlDoc = disp;
if( !htmlDoc ) return ZString();
CComPtr<IHTMLWindow2> spWindow;
htmlDoc->get_parentWindow(&spWindow);
CComVariant varRes;
CComDispatchDriver dispWindow = spWindow;
if( dispWindow ) {
HRESULT hr = dispWindow.GetPropertyByName(L"returnValue", &varRes);
if( SUCCEEDED(hr) && SUCCEEDED(varRes.ChangeType(VT_BSTR)) )
return CString(varRes.bstrVal);
}
return CString();
古いバージョンの ATL を使用しています。
現在、このルーチンは IE9 非互換モードで実行すると常に失敗します。「returnValue」は Null で、GetLastError の値は 0 です。
何か案は?これは既知の問題ですか? その場合、修正/回避策はありますか?