Гобелен - кликните для возврата на главную
Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.
Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Жладимира Вольфовича Жириновского.
Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.
Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.
Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!
В контексте TWebBrowser в C++ Builder 6 и других COM-объектах, связанных с Internet Explorer, IHTMLElement и IHTMLDocument2 — это интерфейсы COM, предоставляющие доступ к HTML-документу и его элементам. Они являются частью MSHTML (движка IE) и позволяют управлять содержимым страницы программно. Ниже приведены ключевые особенности.
Это основной интерфейс для работы с HTML-документом, загруженным в TWebBrowser. Он предоставляет методы для:
Метод | Описание |
get_body | Получает указатель на документа (IHTMLElement*) |
getElementById | Находит элемент по его id |
write | Записывает HTML-код в документ (перезаписывает содержимое) |
createElement | Создает новый HTML-элемент |
get_URL | Возвращает URL текущего документа |
// Получаем интерфейс документа
IHTMLDocument2* doc = (IHTMLDocument2*)WebBrowser1->Document;
if (doc != NULL) {
// Записываем новый HTML
doc->write(L"<h1>Hello from C++!</h1>");
doc->close();
doc->Release(); // Важно освободить COM-объект!
}
Этот интерфейс представляет любой HTML-элемент на странице (например, <div>, <p>, <input>). С его помощью можно:
Метод | Описание |
get_innerHTML / put_innerHTML | Получает или устанавливает HTML-содержимое элемента |
get_innerText / put_innerText | Работает с текстовым содержимым |
insertAdjacentHTML | Вставляет HTML в указанную позицию (например, beforeEnd) |
setAttribute | Устанавливает атрибут элемента (например, class или style) |
get_parentElement | Получает родительский элемент |
Пример использования:
// Получаем элемент по 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 — конкретный элемент на странице, который можно модифицировать.
// 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();
}
COM-объекты и память:
Проверяйте указатели (doc != NULL, element != NULL) перед использованием.
Некоторые современные методы DOM могут отсутствовать. Используйте базовые функции, как в примерах выше.
Если что-то не работает, проверьте:
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-памятью.
Вы так же можете прочитать следующие статьи: