Вот его краткое описание из MSDN:
Методы IHTMLEventObj
get_altKey |
Состояние клавиши Alt |
get_button |
Возвращает информацию о нажатых кнопках мыши |
get_cancelBubble |
Возвращает будет ли продолжена обработка события вверх по иерархии обработчиков |
get_clientX |
Возвращает горизонтальную позицию курсора мыши относительно клиентской области окна |
get_clientY |
Возвращает вертикальную позицию курсора мыши относительно клиентской области окна |
get_ctrlKey |
Состояние клавиши Ctrl |
get_fromElement |
Возвращает указатель на интерфейс IHTMLElement позволяющий получить доступ к элементу с которого "ушел" курсор мыши при событиях onmouseover или onmouseout. |
get_keyCode |
Возвращает код нажатой клавиши |
get_offsetX |
Возвращает горизонтальную позицию курсора относительно контейнера элемента |
get_offsetY |
Возвращает позицию курсора относительно контейнера элемента |
get_qualifier |
Возвращает идентификатор события |
get_reason |
Возвращает состояние передачи данных для объекта источника данных |
get_returnValue |
Возвращаемое значение события или диалога |
get_screenX |
Горизонтальная координата относительно координат экрана |
get_screenY |
Вертикальная координата относительно координат экрана |
get_shiftKey |
Состояние клавиши Shift |
get_srcElement |
Возвращает указатель на интерфейс IHTMLElement послуживший источником событий |
get_srcFilter |
Возвращает объект фильтр возбудивший событие onfilterchange |
get_toElement |
Возвращает указатель на интерфейс IHTMLElement позволяющий получить доступ к элементу с на который "пришел" курсор мыши при событиях onmouseover или onmouseout |
get_type |
Возвращает строковое название события |
get_x |
Возвращает горизонтальную позицию мыши относительно родительского объекта в иерархии, позиционированного с помощью атрибутов CSS |
get_y |
Возвращает вертикальную позицию мыши относительно родительского объекта в иерархии, позиционированного с помощью атрибутов CSS |
put_cancelBubble |
Задать будет ли продолжена обработка события вверх по иерархии обработчиков |
put_keyCode |
Задать код нажатой клавиши |
put_returnValue |
Задать возвращаемое событием значение |
Стоит заметить, что интерфейс IHTMLEventObj доступен только на время обработки конкретного события. При этом не все свойства в контексте определенного события имеют смысл. Например, значения возвращаемые функциями get_fromElement и get_toElement доступны только при обработке событий мыши onmouseover и onmouseout.
В следующем примере в обработчике обределяется нажатая клавиша и выводится соответствующее диалоговое окно. Если была нажата клавиша Enter, то дальнейшая обработка отменяется.
void CMyHtmlView::OnKeyDown(DISPID id, VARIANT* pVarResult) {
HRESULT hr;
LPDISPATCH pDispatch = GetHtmlDocument();
if (pDispatch != NULL) {
IHTMLDocument2* pHtmlDoc;
hr = pDispatch->;
QueryInterface(__uuidof( IHTMLDocument2), (void**)&pHtmlDoc);
IHTMLWindow2* pWindow;
IHTMLEventObj* pEvent;
hr = pHtmlDoc->get_parentWindow(&pWindow);
ASSERT(SUCCEEDED(hr));
hr = pWindow->get_event(&pEvent);
ASSERT(SUCCEEDED(hr));
// Определяем нажатую клавишу
long nKey;
hr = pEvent->get_keyCode(&nKey);
ASSERT(SUCCEEDED(hr));
// Если Enter не хотим обрабатывать дальше
if (nKey == VK_RETURN) {
V_VT(pVarResult) = VT_BOOL;
V_BOOL(pVarResult) = FALSE;
}
pDispatch->Release();
pWindow->Release();
pEvent->Release();
pHtmlDoc->Release();
CString sMes;
sMes.Format("CEventView::OnKeyDown(DISPID = %d)\nKeyCode: %d", id, nKey);
AfxMessageBox(sMes);
}
}
В заключение
Чтобы собрать воедино все фрагменты приведу небольшой пример ( event.zip). Запустите его и выберите команду меню Event\OnKeydown. Теперь понажимайте клавиши внутри страницы. И посмотрите, что из этого получится. В этом примере регистрируется только один обработчик, но я думаю дочитав эту статью вы без труда сможете реализовать любой другой.
В заключение хочется заметить, что в этой статье я затронул только один небольшой аспект использования элемента WebBrowser. Если Вас заинтересует данная тема, пишите, продолжим.
ВОПРОС – ОТВЕТ
Как получить список запущенных приложений?
Автор: Александр Федотов
Тестовое приложение Process Viewer – pview.zip (130 Kb)
Операционная система Windows знаменита своими окнами. Поэтому, когда заходит речь о приложениях, пользователи ассоциируют их с окнами, хотя с технической точки зрения правильнее было бы оперировать понятием процесса. В частности, под списком приложений пользователи часто подразумевают не список процессов, а список главных окон приложений, видимых на экране. В таком случае, задача перечисления приложений сводится к перечислению их главных окон.
Читать дальше