![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 11.07.2008
Сообщений: 17
|
![]()
Всем здрасте.
С Делфи общаюсь только неделю и уже столкнулся с такой проблемой: потребовалось написать прогу, которая печатает (разумеется на принтере) файлы, которые найдет (все, что печатать вобще можно, то и должна печатать). Офисовские документы как-то удается распечатать (ну и всякие там *.txt, *.rtf, *.pdf и тп)(при помощи ShellExecute), а вот с *.html возникают определенные трудности, а именно выплевывается окно с вопросом сколько копий печатать, как печатать и на чем. Сие явление для меня нежелательно, так как если послать на печать 6328463 файла, у пользователя пальцы устанут. Пробовал: ShellExecute(Handle, 'Print', 'Файло',nil , nil, SW_hide), также WinExec(PChar(C),SW_SHOW), где C - вытащен из HKCR\htmlfile\shell\print\command с замененным %1 на имя файла. И если в первом случае он показывает окошко, описанное выше, то во втором случае он вобще никаких действий не производит. Если кто-нибудь что-то про это может подсказать, буду очень признателен.
Краткость - сестра таланта.
Л.Н.Толстой
|
![]() |
![]() |
![]() |
#2 |
Дон Кихот
Форумчанин
Регистрация: 17.01.2008
Сообщений: 130
|
![]()
html печатать можно только через браузер...
у меня по print вообще office загружается... т.е. загружаешь iexplorer.exe, далее кидаешь ему команду VK_CONTROL + Ord('P'), далее VK_ENTER и так для всех файлов... Тема по Ctrl+P есть здесь http://www.delphimaster.ru/cgi-bin/f...1203995675&n=5 Найти handle загруженного окна: Код:
|
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Delphi World:
Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 11.07.2008
Сообщений: 17
|
![]()
И еще вопрос: а под консольное приложение этот код должен работать?
Краткость - сестра таланта.
Л.Н.Толстой
Последний раз редактировалось Pitonio; 11.07.2008 в 16:48. Причина: Проверил с кнопочками, все работает |
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 11.07.2008
Сообщений: 17
|
![]()
Ну да, в консольном виде у меня сразу после navigate выбрасывает в конец процедуры. А вот окном родителя может быть IE? Если да, то можно его вызывать его с помощью WebBrowser1.CreateParented? И еще: если делать так, как мне надо (т.е. по какому-либо событию программа должна и загружать и печатать без участия пользователя), то выбодится ошибка: "Попытна отменить конченое место переноса, которое не было зарегистрировано." Чует мое сердце, что программа не будет печатать, пока не загрузится страница. Если так, то надо вызвать процедуру печати после того, как загрузится страница. Вопрос только в том, как определить когда она загрузилась. Задержку выставлять - не совсем желательно. Я думаю есть флаг того, что страница уже загрузилась.
Краткость - сестра таланта.
Л.Н.Толстой
|
![]() |
![]() |
![]() |
#7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 11.07.2008
Сообщений: 17
|
![]()
Чего-то не получается у меня ничего. Где и как надо объявлять событие OnDownloadComplete?
Пишу: type TForm1 = class(TForm) .... private procedure WebBrowser1OnDownloadComplete(Sende r:TObject); { Private declarations } public { Public declarations } end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://www.ya.ru'); end; Procedure Tform1.WebBrowser1OnDownloadComplet e(Sender:Tobject); Var vaIn, vaOut : OleVariant; Begin WebBrowser1.ControlInterface.ExecWB (OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); end; По кнопке загружается страница, дальше (по моим предположениям) сразу должна ползти печать но ничего не происходит. для контроля (ну если может какие глюки с принтером) вляпал Лэйбл1 и по событию OnDownloadComplete, текст Лейбла должен меняться, но не меняется. Вот если кто-нибудь мне б дал сцылку на то, где описано как отрабатывать события, или так, в двух словах на пальцах мне объяснил что я неправильно делаю, было бы мне счастье. (но оно бы было бы не полным, если я не узнаю как представить WebBrowser в окне Internet Explorer'a). А всем откликнувшимся людям Огромное Спасибо.
Краткость - сестра таланта.
Л.Н.Толстой
|
![]() |
![]() |
![]() |
#9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Я наверное ошибся (извинтеляюсь) не то событие тебе нагнул.
Попробуй OnDocumentComplete юзать. Давно уж забил на WebBrowser
I'm learning to live...
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 11.07.2008
Сообщений: 17
|
![]()
Ну вот. Все работает. Всем Огромное Спасибо. На консольный вариант забил. Буду теперь эту процедуру пытаться запихивать в DLL, но это уже совсем другая песня... Закрывайте тему, Господа Модераторы.
P.S.: Если нужен код программы, спрашивайте как-нибудь.
Краткость - сестра таланта.
Л.Н.Толстой
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Печать в Delphi | Coda89 | Помощь студентам | 5 | 21.05.2008 17:32 |
Открытие документов Microsofrt Common Console через delphi | )Игнат( | Общие вопросы Delphi | 6 | 24.01.2008 17:09 |
перехват отправления чужими программами отправки на печать документов | Nat | Win Api | 7 | 20.04.2007 16:07 |
где найти инфу про программирование документов ms office в Delphi? нужно срочно! | Алёна | БД в Delphi | 7 | 05.04.2007 12:57 |