Страница 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 :D

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
Во вторых если не получится, завтра с работы сделаю демку и выложу сюда.