| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TWebBrowser и копирование страницы |
| Автор: Pcrepair 14.12.2011, 16:06 | ||||
| Добрый день. Есть простой код браузера, позволяющий скачать странцу, "выделить все" на странице и скопировать в буфер обмена ОС. все работает (кроме ХТМЛ-страниц с фреймами, там ничего не выделяется) Но использовать Буфер обмена нежелательно, его могут использовать и другие программы что может привести к ошибкам вот текущий код:
ВОПРОС: каким образом копировать содержимое страницы в ПЕРЕМ? Наверно что то вроде:
Если кто в курсе, подскажите код Заранее спасибо. |
| Автор: MetalFan 14.12.2011, 17:55 |
| зачем же через буфер обмена? IHTMLDocument2.Body.innerHTML (или outerHTML) ? з.ы. поправь заголовк темы. а то там кто-то кого-то куда-то вПЕР.. |
| Автор: Pcrepair 15.12.2011, 13:50 | ||||
через буфер обмена не надо, надо в ПЕРЕМенную. вопрос в том как это сделать корректно
что то не нашел где править? |
| Автор: MetalFan 15.12.2011, 14:35 |
? |
| Автор: Pcrepair 16.12.2011, 17:56 | ||||||
приискал вот такое решение
но .body.innerHTML почемуто неправильно копирует сслылки, к примеру то что в коде страницы, ЕСЛИ ВРУЧНУЮ копировать в ХТМЛ-редактор
а вот это в коде самой страницы, отсутствует протокол и имя сервера
как такое вообще получается и что с этим можно сделать? |
| Автор: MetalFan 16.12.2011, 18:03 |
ну какбы такую сервер отдает страницу. Зачем ему прописывать полные пути то? А браузер видимо уже автоматом подставляет текущий протокол, сервер, порт, путь и т.п. Что сделать - а надо ли что-то с этим делать то? если да, то "пробежаться" по всем anchor'ам и допрописать нужную информацию в href. Хотя возможно есть стандартный способой, но я его не знаю. |
| Автор: Pcrepair 17.12.2011, 22:37 | ||
| вот еще вариант - копируем в буфер обмена - из буфера обмена копируем в ПЕРЕМ типа HTML : TClipboard; - обнуляем буфер обмена. времени на это пойдет миллисекунды, вероятность размещения в буфере данных из других программ практически сходит на нуль - копируем из ПЕРЕМ в МЕМО, для контроля итого
но вот проблема - на строке Memo1 := HTML; компилятор пишет: несовместипые типы никто не в курсе что тут млжно сделать? чтоб в МЕМО поместить данные из буфера? |
| Автор: MetalFan 17.12.2011, 22:53 | ||
Pcrepair, да что-то жесть какая-то понаписана...
|
| Автор: Pcrepair 17.12.2011, 23:12 | ||
Теперь компилятор компилирует
НО..... в МЕМО выводится только тестовая часть страницы, а ХТМЛ-код пропал может можно что то типа HTML := Clipboard.AsHtml; ???? Еще раз, если в автомате сделать КОНТР+А и КОНТР+С (это делает выше стоящий код) то, если вставить потом код в ХТМЛ-редактор, там ссылки имеют полный путь. просто хотелось проверить, что на самом деле содержит буфер обмена ОС, действительно Ишак ссылки восстановил, или все же это работа ХТМЛ-редактора |
| Автор: MetalFan 18.12.2011, 00:24 |
| В общем приятных извращений с буфером. Я предложил внятный и самый на мой взгляд правильный вариант (через innerHTML). |