С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13

Как распечатать страницу из браузера?

26.04.2011, 13:22. Показов 4001. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая:
достался по наследству прилично работающий EXE-шник, но нет исходных программ. Нужно восстановить программы (VB6), чтобы можно было вносить необходимые изменения.
Есть формы, собирающие кучу информации и записывающие их в HTML файлы.
Затем можно посмотреть все это в Explorer и распечатать на бумаге.
Почти все удалось сделать, осталась кнопка 'Распечатать'. Нужно запускать на печать без всяких диалогов и обращений один единственный,отформатированный HTML-тегами файл.
Подскажите, пожалуйста, кто может, бьюсь над этим несколько дней.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2011, 13:22
Ответы с готовыми решениями:

Как распечатать страницу из браузера?
Подскажите, как распечатать страницу из браузера.

Вирус изменил стартовую страницу браузера,при открытии браузера направляет на сайт
Здравствуйте.У меня такая проблема ,при открытии новой вкладки и практически после каждого клика открывается вкладка с рекламой , поиск...

Как можно распечатать html страницу на сервере
Нужно на работе чтобы люди вводя данные на веб странице распечатывалось на принтере который подключен к серверу. Делаю так <?php ...

16
Comanche
27.04.2011, 14:02
Всё очень просто. Кидаешь на форму элемент управления WebBrowser (для этого надо подрубить к проекту 'Microsoft Internet Controls), грузишь в него файл методом WebBrowser1.Navigate, в событии WebBrowser1_DocumentComplete делаешь cmdPrint.Enabled = True, где cmdPrint - кнопка 'Распечатать документ'. Код события cmdPrint_Click делаешь таким:
Visual Basic
1
WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
Примечания:
1. При необходимости элемент WebBrowser можно сделать невидимым на форме - а возможность печати вышеописанным способом всё равно останется.
2. Данный способ печати требует наличия на компьютере MS IE версии не ниже 4.0.
3. Попытка распечатать документ, не дождавшись события DocumentComplete, может привести к ошибке.
4. При желании можно даже дополнить всё это двумя возможностями: preview печати и настройки параметров страницы: OLECMDID_PRINTPREVIEW и OLECMDID_PAGESETUP, соответственно.
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
28.04.2011, 14:33  [ТС]
Видимо что-то сделано не так, пишет:
Method 'ExecWB' of object 'IWebBrouser2' failed.
0
Comanche
28.04.2011, 14:47
Код в студию!
0 / 0 / 0
Регистрация: 19.08.2010
Сообщений: 123
28.04.2011, 14:59
Comanche A kak ya mogu pechatat Form1 obichni Vb interfeis s Textboxami, Es takaya Api funkciya?
0
Comanche
28.04.2011, 15:14
Слушай, hayart, не создавай офф-топик, а? ну запость отдельно в форум - пообщаемся...
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
28.04.2011, 15:26  [ТС]
Вроде все сделано по подсказке, может, неправильно загружаю файл. Вообще-то, почти ничего не знаю про WebBrouser, может подскажете, где почитать, желательно по-понятней начинающему.
0
Comanche
28.04.2011, 15:32
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
    Me.Caption = 'Loading HTML...'
    WebBrowser1.Navigate 'D:......somefile.html'
End Sub
'
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Me.Caption = Me.Caption & ' Done. Printing...'
    WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End Sub
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
28.04.2011, 17:13  [ТС]
Боюсь замучить, но хочется понять.
У меня кнопка,открывающая Explorer
Visual Basic
1
2
3
4
5
   Private Sub cbShowIE_Click()
     Set Explorer = New SHDocVw.InternetExplorer
     Explorer.Visible = True
     Explorer.Navigate 'D:/MyFile.htm'
   End Sub
Кнопка для печати
Visual Basic
1
2
3
    Private Sub cmdPrint_Click()
      WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
    End Sub
Добавлен WebBrowser
Visual Basic
1
2
3
   Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
     cmdPrint.Enabled = True
   End Sub
Загружаю файл
Visual Basic
1
2
3
    Private Sub Form_Load()
       WebBrowser1.Navigate 'D:MyFile.htm'
    End Sub
Что не так?
0
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
28.04.2011, 17:19
Это ты не тот объект открываешь!
Visual Basic
1
2
3
4
5
Private Sub cbShowIE_Click()   
Set Explorer = New SHDocVw.InternetExplorer   
Explorer.Visible = True   
Explorer.Navigate 'D:/MyFile.htm'  
End Sub
Тебе надо подключить компонент (контрол) Microsoft Internet Control и поместить его на свою форму. И тогда уже см код comanche
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
28.04.2011, 18:12  [ТС]
Microsoft Internet Control у меня подключен, WebBrowser помещен на форму. А кнопкой cbShowIE прекрасно открывается Explorer.
К сожалению у меня нет подходящей книги по этой теме, вот и копаюсь...
Со строками и датами проще, можно почитать.
0
Comanche
28.04.2011, 18:40
2webmaster:
Поставь 'чистый' эксперимент:
1. Создай новый ПУСТОЙ проект.
2. Подключи к нему (Tools/Components) 'Microsoft Internet Controls'.
3. Размести на форме элемент управления WebBrowser.
4. Вставь в код формы мой код, предварительно исправив имя HTML-файла на реальное.
5. Нажми F5 (т.е. 'Пуск').

Если сделаешь всё по шагам и ТОЧНО - то всё получится.
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
29.04.2011, 12:05  [ТС]
Ребята, большое всем спасибо. Все проработала, параллельно консультировалась у Армена Мнацаканян.
И в результате получилось:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdPrint_Click()
        On Error GoTo ErrorHandler
L1:
        If Not Explorer.Visible Then Explorer.Visible = True
    Explorer.Navigate 'D:MyFile.htm'
    Explorer.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER
        Exit Sub
ErrorHandler:
    Set Explorer = Nothing
    Set Explorer = New SHDocVw.InternetExplorer
    GoTo L1
End Sub
Все работает.У меня не хватало обработки ошибок.
Спасибо. Удачи всем!
0
Comanche
29.04.2011, 13:18
Твой последний код - чепуха полная. Извини уж, но так оно и есть.
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
29.04.2011, 14:20  [ТС]
Вполне возможно. Но работает. А это для меня важно сейчас, пока я слепо тыкаюсь в Visual Basic. Может быть со временем смогу сделать это по-умней. Хорошо, что есть люди, готовые помочь! Спасибо.
0
Comanche
29.04.2011, 15:29
Если не научишься сразу делать правильно - то дальше, имхо, будет только хуже: привычка сделать тяп-ляп ('лишь бы СЕЙЧАС работало') до добра не доведёт. Уж поверь.
ОК, ты обходишься без контрола, и вместо этого работаешь с 'отдельным' Эксплорером. Но:

1. Ты не дожидаешься загрузки файла (выполненной методом Navigate). Вполне возможно, что для маленького HTML-файла загрузка происходит настолько быстро, что последующий ExecWB подхватывает уже окончательно загрузившийся файл, и проблемы не возникает. Но для ОБЩЕГО СЛУЧАЯ это может и не сработать. Выхода - два:

а). Объявлять объект Explorer с ключевым словом WithEvents, чтобы можно было 'поймать' событие DocumentComplete;
б). После Navigate ставить 'выжидающий' цикл Do...Loop, который будет анализировать свойство Explorer.Busy (или Explorer.ReadyState).

2. Зачем в обработчике ошибок у тебя идёт 'пересоздание' объекта?! Это что - попытка бегать по кругу, пока не повезёт и не сработает без ошибок ExecWB? понятно, что оно в таком виде у тебя работает, но... это просто кошмарный стиль программирования (

3. Зачем использовать в 21-ом веке оператор GOTO?

Настоятельный совет: реши задачу НОРМАЛЬНО сразу. Не оставляй на потом.
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
30.04.2011, 09:35  [ТС]
Согласна, все нужно делать, как следует. Проблема в том, что я не программист, а web дизайнер, просто сайт, которым мне предстоит заниматься, привязан к программе на VB. И мне приходится разбираться с этим. Занимаюсь этим месяца два. По работе со строками, датами, файлами проблем нет, все это подробно разбирается в книгах. А про работу с Explorer у меня ничего нет, вот и плаваю. С любой подсказкой мне приходится долго возиться, чтобы понять хотя бы смысл. То, что ясно программисту, для меня - темный лес.
Подсказку поняла, поработаю. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2011, 09:35
Помогаю со студенческими работами здесь

Как распечатать HTML страницу на весь лист?
Когда пробую распечатать(у меня таблица width=700), то таблица с права обрезается.На распечатаной странице отступы по 2 см справа и...

Как перезагрузить страницу браузера
в общем есть какая нить функция которая действует как f5?) необходимо обновить текущую страницу...

Как удалить стартовую страницу из браузера
Помогите удалить 2343as12.ru при запуске браузера

Как сделать страницу по окну браузера?
Ребята, подскажите как сделать страницу по окну браузера? <!DOCTYPE HTML> <html> <head> ...

Как распечатать указанную страницу документа Word из vba Access?
Задача по нажатию кнопки на форме в Access открыть документ Word и распечатать одну указанную страницу. Затем документ не показывая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru