//w - pointer to IWebBrowser2 BOOL WebMessage(MSG *sMsg) { IOleInPlaceActiveObject *OleInPlaceActiveObject; w->lpVtbl->QueryInterface(w, &IID_IOleInPlaceActiveObject, (void**) &OleInPlaceActiveObject); if(OleInPlaceActiveObject->lpVtbl->TranslateAccelerator(OleInPlaceActiveObject, &sMsg) == S_OK) return TRUE; else return FALSE; } void main() { [...] while(GetMessage(&sMsg, 0, 0, 0)) { if(!WebMessage(&sMsg) && !TranslateMDISysAccel(hFrameWnd, &sMsg)) { TranslateMessage(&sMsg); DispatchMessage(&sMsg); } } [...] }