У меня есть IE BHO, созданный более 3 лет назад, который использует функцию IHTMLEventObj :: put_keyCode.Эта функция работала, как описано в IE6, IE7 и IE8.Однако при тестировании с IE9 RC он больше не работает, как описано в документации.Функция вызывается так же, и в результате получается S_OK, но ключ не отображается в поле ввода.В DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS выполняется вызов даже моей функции Invoke ().
Я нашел кого-то с похожей проблемой: http://social.msdn.microsoft.com/Forums/is/ieextensiondevelopment/thread/abcbaffd-ed8a-45b8-840b-8ad8d7d10081,, однако по какой-то причине я не могу просмотреть проблему.Я смог просмотреть его с помощью кеша Google: http://webcache.googleusercontent.com/search?q=cache:3OkEceoi6jwJ:social.msdn.microsoft.com/Forums/is/ieextensiondevelopment/thread/abcbaffd-ed8a-45b8-840b-8ad8d7d10081+put_keyCode+IE9&cd=1&hl=pt-BR&ct=clnk&gl=br&source=www.google.com.br.
Любая помощь будет принята с благодарностью. Это критическая проблема, которую необходимо решить как можно скорее.
Заранее спасибо.
ОБНОВЛЕНИЕ: Вот некоторый код, но хотелось бы подчеркнуть, что этот код прекрасно работает в IE6, IE7 и IE8.В IE9 он возвращает S_OK, но ключ не изменяется.
BOOL CToolBandObj::InvokeElementOnKeyPress ( DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pvarResult,
EXCEPINFO* pExcepInfo, UINT* puArgErr)
{
CComPtr<IDispatch> spEventObj;
spEventObj = pDispParams->rgvarg[0].pdispVal;
CComPtr<IHTMLEventObj> pHtmlEvent;
HRESULT hr = spEventObj->QueryInterface(IID_IHTMLEventObj,(LPVOID*)&pHtmlEvent);
if (SUCCEEDED(hr) && pHtmlEvent)
{
CComPtr<IHTMLElement>spElement;
hr = pHtmlEvent->get_srcElement(&spElement);
_bstr_t bstrTag;
spElement->get_tagName(&bstrTag.GetBSTR());
if (SUCCEEDED(hr) && spElement)
{
LONG lKeyCode = 0;
pHtmlEvent->get_keyCode(&lKeyCode);
pHtmlEvent->put_keyCode(lKeyCode);
pvarResult->vt = VT_BOOL;
pvarResult->boolVal = VARIANT_TRUE;
return TRUE;
}
}
}
ОБНОВЛЕНИЕ 2
Мы подали заявку MSDN, они нашли проблему,и последнее, что мы услышали от них, собирались это исправить.