Что такое IHTMLElemen и IHTMLDocument2?

Гобелен - кликните для возврата на главную

Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.

Так почему бы не начать использовать обход блокировки YouTube при том что техническая возможность используя расширение nikolaevevge для браузера Mozilla Firefox уже появилась, а объем полезной(и не очень) информации на видеохостинге YouTube, по мнению некоторых диванных экспертов, меньше не стал.

Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Владимира Вольфовича Жириновского.

Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.

На очередном конкурсе танцев, школьница отлично выступила.

Что использовать вместо Юбуст

Вот та самая информация: программа для продвижения канала YouTube, эта информация выложена уже несколько лет, при этом просмотров не много, а метод который описан в данном видео действительно помогает продвигать видео в YouTube.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

В контексте TWebBrowser в C++ Builder 6 и других COM-объектах, связанных с Internet Explorer, IHTMLElement и IHTMLDocument2 — это интерфейсы COM, предоставляющие доступ к HTML-документу и его элементам. Они являются частью MSHTML (движка IE) и позволяют управлять содержимым страницы программно. Ниже приведены ключевые особенности.

IHTMLDocument2 — интерфейс документа

Это основной интерфейс для работы с HTML-документом, загруженным в TWebBrowser. Он предоставляет методы для:

  • Доступа к DOM (Document Object Model).
  • Изменения содержимого страницы.
  • Управления элементами (формами, ссылками, скриптами).

Основные методы:

МетодОписание
get_bodyПолучает указатель на документа (IHTMLElement*)
getElementByIdНаходит элемент по его id
writeЗаписывает HTML-код в документ (перезаписывает содержимое)
createElementСоздает новый HTML-элемент
get_URLВозвращает URL текущего документа

Пример использования:

C++
    
// Получаем интерфейс документа
IHTMLDocument2* doc = (IHTMLDocument2*)WebBrowser1->Document;
if (doc != NULL) {
    // Записываем новый HTML
    doc->write(L"<h1>Hello from C++!</h1>");
    doc->close();
    doc->Release(); // Важно освободить COM-объект!
}

  

IHTMLElement — интерфейс элемента

Этот интерфейс представляет любой HTML-элемент на странице (например, <div>, <p>, <input>). С его помощью можно:

  • изменять атрибуты элемента (id, class, style и т.д.);
  • модифицировать содержимое элемента;
  • управлять позицией элемента в DOM.

Основные методы

МетодОписание
get_innerHTML / put_innerHTMLПолучает или устанавливает HTML-содержимое элемента
get_innerText / put_innerTextРаботает с текстовым содержимым
insertAdjacentHTMLВставляет HTML в указанную позицию (например, beforeEnd)
setAttributeУстанавливает атрибут элемента (например, class или style)
get_parentElementПолучает родительский элемент

Пример использования:

C++
    
// Получаем элемент по id
IHTMLElement* element = NULL;
doc->getElementById(L"myDiv", &element);
if (element != NULL) {
    // Меняем текст
    element->put_innerText(L"Новый текст");
    // Добавляем HTML
    element->insertAdjacentHTML(L"beforeEnd", L"<span>Дополнительно</span>");
    element->Release(); // Освобождаем COM-объект
}

  

Как они связаны?

IHTMLDocument2 — это «входная точка» для работы с документом. Через него вы получаете доступ к элементам (IHTMLElement).

IHTMLElement — конкретный элемент на странице, который можно модифицировать.

Пример взаимодействия

C++
    
// 1. Получаем документ
IHTMLDocument2* doc = (IHTMLDocument2*)WebBrowser1->Document;
if (doc != NULL) {
    // 2. Получаем элемент body
    IHTMLElement* body = NULL;
    doc->get_body(&body);
    
    if (body != NULL) {
        // 3. Добавляем новый div в body
        body->insertAdjacentHTML(L"beforeEnd", 
            L"<div id='msg'>Сообщение из C++</div>");
        body->Release();
    }
    doc->Release();
}

  

Важные нюансы для C++ Builder 6

COM-объекты и память:

  • Всегда вызывайте Release() для интерфейсов, чтобы избежать утечек памяти.
  • Используйте WideString (Unicode) для строк, так как IE6 работает с UTF-16.

Безопасность:

Проверяйте указатели (doc != NULL, element != NULL) перед использованием.

Поддержка IE6:

Некоторые современные методы DOM могут отсутствовать. Используйте базовые функции, как в примерах выше.

Отладка:

Если что-то не работает, проверьте:

  • Загружен ли документ (WebBrowser1->Document != NULL).
  • Корректность ID элементов (getElementById может вернуть NULL).

Практический пример: добавление сообщения в чат

C++
    
void AddChatMessage(TWebBrowser* browser, const WideString& user, const WideString& text) {
    IHTMLDocument2* doc = (IHTMLDocument2*)browser->Document;
    if (doc != NULL) {
        IHTMLElement* chatContainer = NULL;
        doc->getElementById(L"chat-container", &chatContainer);
        
        if (chatContainer != NULL) {
            // Создаем HTML для нового сообщения
            WideString html = 
                L"<div class='message'><span class='user'>" + user + 
                L":</span> " + text + L"</div>";
                
            // Добавляем в конец контейнера
            chatContainer->insertAdjacentHTML(L"beforeEnd", html.c_bstr());
            chatContainer->Release();
        }
        doc->Release();
    }
}

  

Итог

IHTMLDocument2 — интерфейс для работы с документом (аналог document в JavaScript).

IHTMLElement — интерфейс для управления конкретными элементами (аналог element в JS).

Используйте их для динамического обновления содержимого TWebBrowser без временных файлов.

Эти интерфейсы — основа для взаимодействия C++-кода с HTML в компоненте TWebBrowser. Они дают полный контроль над страницей, но требуют аккуратной работы с COM-памятью.

Другие товары

Вы так же можете прочитать следующие статьи: