Страница 1 из 2
Print из OLE IE
Добавлено: 18 Октябрь 2010, 15:47
seawolf
Коллеги!
Можно-ли подвесить печать со своей кнопки на OLE объект в котором загружена страница IE? В своем окне смотрим эту страницу по правой кнопке есть Печать, но хочется повесить радоям кнопку явно и с нее вызвать диалог печати!
Типа так ?URL{Navigate(URL="' & Clip(FileName_) & '", чего нибудь чтобы дать печать)'}
Re: Print из OLE IE
Добавлено: 18 Октябрь 2010, 16:36
Дед Пахом
Попробуй ?URL{'PrintDocument()'}, по идее должен напечатать загруженную страницу.
Re: Print из OLE IE
Добавлено: 19 Октябрь 2010, 13:31
seawolf
Не помогло.
Пробовал и так тоже
?URL{'PrintDocument(URL="' & Clip(FileName_) & '"'}
Страница локалон с диска.
Re: Print из OLE IE
Добавлено: 19 Октябрь 2010, 14:19
Дед Пахом
У метода PrintDocument нет параметра URL, есть необязательный параметр withUI:
Код: Выделить всё
IDHTMLEdit INTERFACE(IDHTMLSafe),COM,TYPE
!methods:
LoadDocument PROCEDURE(*VARIANT pathIn,<*VARIANT promptUser>),HRESULT,PROC
SaveDocument PROCEDURE(*VARIANT pathIn,<*VARIANT promptUser>),HRESULT,PROC
PrintDocument PROCEDURE(<*VARIANT withUI>),HRESULT,PROC
GetBrowseMode PROCEDURE(*VARIANT_BOOL pVal),HRESULT,PROC
SetBrowseMode PROCEDURE(VARIANT_BOOL pVal),HRESULT,PROC
END
А, ну да, я забыл сказать, что имел в виду ocx DHTML

Re: Print из OLE IE
Добавлено: 19 Октябрь 2010, 15:32
seawolf
А для Shell.Explorer.2 случайно печати нету?
Re: Print из OLE IE
Добавлено: 19 Октябрь 2010, 16:12
Дед Пахом
Я с ним не работал
Re: Print из OLE IE
Добавлено: 19 Октябрь 2010, 19:07
seawolf
а dhtml это всегда в винде валяется или его ставить надо? Что-то не слыхал про такое!
Re: Print из OLE IE
Добавлено: 19 Октябрь 2010, 22:50
Дед Пахом
Он не валяется, он бесплатный с сайта M$. Правда, не знаю, как обстоят дела в Висте и W7, давно не юзал.
Re: Print из OLE IE
Добавлено: 20 Октябрь 2010, 7:13
Admin
seawolf писал(а):А для Shell.Explorer.2 случайно печати нету?
Для
Shell.Explorer.2 есть команда ExecWB, про 2-й аргумент ничего не скажу... ищи в инете.
Все команды можно посмотреть с помощью OleView.exe в файле shdocvw.dll
Код: Выделить всё
?OLE{'ExecWB(6,0)'} ! диалог выбора принтера
?OLE{'ExecWB(7,0)'} ! превью перед печатью
и вообще... вот этот список юзать можно кажись....
Код: Выделить всё
typedef enum {
OLECMDID_OPEN = 1,
OLECMDID_NEW = 2,
OLECMDID_SAVE = 3,
OLECMDID_SAVEAS = 4,
OLECMDID_SAVECOPYAS = 5,
OLECMDID_PRINT = 6,
OLECMDID_PRINTPREVIEW = 7,
OLECMDID_PAGESETUP = 8,
OLECMDID_SPELL = 9,
OLECMDID_PROPERTIES = 10,
OLECMDID_CUT = 11,
OLECMDID_COPY = 12,
OLECMDID_PASTE = 13,
OLECMDID_PASTESPECIAL = 14,
OLECMDID_UNDO = 15,
OLECMDID_REDO = 16,
OLECMDID_SELECTALL = 17,
OLECMDID_CLEARSELECTION = 18,
OLECMDID_ZOOM = 19,
OLECMDID_GETZOOMRANGE = 20,
OLECMDID_UPDATECOMMANDS = 21,
OLECMDID_REFRESH = 22,
OLECMDID_STOP = 23,
OLECMDID_HIDETOOLBARS = 24,
OLECMDID_SETPROGRESSMAX = 25,
OLECMDID_SETPROGRESSPOS = 26,
OLECMDID_SETPROGRESSTEXT = 27,
OLECMDID_SETTITLE = 28,
OLECMDID_SETDOWNLOADSTATE = 29,
OLECMDID_STOPDOWNLOAD = 30,
OLECMDID_ONTOOLBARACTIVATED = 31,
OLECMDID_FIND = 32,
OLECMDID_DELETE = 33,
OLECMDID_HTTPEQUIV = 34,
OLECMDID_HTTPEQUIV_DONE = 35,
OLECMDID_ENABLE_INTERACTION = 36,
OLECMDID_ONUNLOAD = 37,
OLECMDID_PROPERTYBAG2 = 38,
OLECMDID_PREREFRESH = 39,
OLECMDID_SHOWSCRIPTERROR = 40,
OLECMDID_SHOWMESSAGE = 41,
OLECMDID_SHOWFIND = 42,
OLECMDID_SHOWPAGESETUP = 43,
OLECMDID_SHOWPRINT = 44,
OLECMDID_CLOSE = 45,
OLECMDID_ALLOWUILESSSAVEAS = 46,
OLECMDID_DONTDOWNLOADCSS = 47,
OLECMDID_UPDATEPAGESTATUS = 48,
OLECMDID_PRINT2 = 49,
OLECMDID_PRINTPREVIEW2 = 50,
OLECMDID_SETPRINTTEMPLATE = 51,
OLECMDID_GETPRINTTEMPLATE = 52,
OLECMDID_PAGEACTIONBLOCKED = 55,
OLECMDID_PAGEACTIONUIQUERY = 56,
OLECMDID_FOCUSVIEWCONTROLS = 57,
OLECMDID_FOCUSVIEWCONTROLSQUERY = 58,
OLECMDID_SHOWPAGEACTIONMENU = 59
} OLECMDID;
Re: Print из OLE IE
Добавлено: 20 Октябрь 2010, 11:12
seawolf
?URL('ExecWB(6,2)} печать немедленно без диалогов, но печатает пустую страницу (даже пишет ссылку на нее в c:\windows\temp). Страницу просматриваемую через Navigate перед этим не печатает. Порыл пока google, третий параметр вроде как должен указывать на страницу, но тоже не помог!
Re: Print из OLE IE
Добавлено: 20 Октябрь 2010, 14:06
Admin
seawolf писал(а):?URL('ExecWB(6,2)} печать немедленно без диалогов, но печатает пустую страницу (даже пишет ссылку на нее в c:\windows\temp). Страницу просматриваемую через Navigate перед этим не печатает. Порыл пока google, третий параметр вроде как должен указывать на страницу, но тоже не помог!
Посмотри вот так:
http://www.google.com/search?client=ope ... 8&oe=utf-8
Re: Print из OLE IE
Добавлено: 20 Октябрь 2010, 16:01
seawolf
Пока лишь обнаружил что
stop(?URL{'LocationName()'})
stop(?URL{'LocationURL()'})
возвращает правильную страницу которая была вызвана в окно по Navigate
но ?URL{'ExecWB(7,0} выводит перед печатью пустую страницу
Такое впечатление, что надо явно задавать перед печатью через какое-то свойство ее путь.
Ушел искать дальше!
Re: Print из OLE IE
Добавлено: 21 Октябрь 2010, 2:17
Admin
seawolf писал(а):?URL('ExecWB(6,2)} печать немедленно без диалогов, но печатает пустую страницу (даже пишет ссылку на нее в c:\windows\temp). Страницу просматриваемую через Navigate перед этим не печатает. Порыл пока google, третий параметр вроде как должен указывать на страницу, но тоже не помог!
Что то не так делаешь видать... или версии IE у нас разные.
Вот пример (на картинке) открывает google.ru
При нажатии на Print идет печать в дефолтовый принтер в качестве которого стоит Snagit
Почти все на экране. Только картинку что то не распечатало, но подозреваю что из за навороченного JS
Удачи!
P.S. IE 6.0 на рабочем компе.
Re: Print из OLE IE
Добавлено: 21 Октябрь 2010, 10:37
seawolf
Да вот то и обидно что вроде все верно написано (3 строки е-мое) и не работает. Тоже IE 6.0.
?URL{PROP:Create} = 'Shell.Explorer.2'
создали контрол
?URL{'Navigate(URL="' & Clip(FileName_) & '", Flags=14)'}
загрузили страницу с диска
Unhide(?URL)
открыли на просмотр
?URL{'ExecWB(6,2)'}
Послали на печать
Re: Print из OLE IE
Добавлено: 21 Октябрь 2010, 12:20
Admin
seawolf писал(а):Да вот то и обидно что вроде все верно написано (3 строки е-мое) и не работает. Тоже IE 6.0.
Ну во первых попробуй просто написать:
?URL{'Navigate(
http://google.ru)'}
+ не хайдить ?URL
Во вторых если не получится, завтра с работы сделаю демку и выложу сюда.