3 년 전 IHTMLEventObj :: put_keyCode 함수를 사용하여 만든 IE BHO가 있습니다. 이 함수는 IE6, IE7 및 IE8에서 문서화 된대로 작동합니다. 그러나 IE9 RC로 테스트 할 때 더 이상 문서화 된대로 작동하지 않습니다. 이 함수는 같은 방법으로 호출되고 결과는 S_OK이지만 키는 입력 필드에 표시되지 않습니다. Invoke() 함수에서도 DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS에서 호출이 이루어졌습니다.IE9 RC에서 IHTMLEventObj :: put_keyCode가 실패합니다.
비슷한 문제가있는 사람을 발견 : 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.
모든 도움을 주시면 감사하겠습니다. 가능한 한 빨리 해결해야 할 중요한 문제입니다.
미리 감사드립니다.
는 UPDATE : 는 여기에 몇 가지 코드이지만,이 코드는 IE6, IE7과 IE8에서 완벽하게 작동하는지, 스트레스를 원했다. IE9에서는 S_OK를 반환하지만 키는 변경되지 않습니다. 우리는 MSDN 사례를 제출 한 2
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;
}
}
}
UPDATE, 그들은 문제를 발견하고, 그들이 그것을 해결하기 위해 가고 있었다에서 마지막으로 우리는 들었다.
입력 필드의 유형은 무엇입니까? – Maurizio
regular – mateuscb
OnKeyPress 이벤트에 대한 샘플 코드를 게시하여 거기에서 수행중인 작업을 보여줄 수 있습니까? – Maurizio