2011-02-26 5 views
0

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, 그들은 문제를 발견하고, 그들이 그것을 해결하기 위해 가고 있었다에서 마지막으로 우리는 들었다.

+0

입력 필드의 유형은 무엇입니까? – Maurizio

+0

regular mateuscb

+0

OnKeyPress 이벤트에 대한 샘플 코드를 게시하여 거기에서 수행중인 작업을 보여줄 수 있습니까? – Maurizio

답변