![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать момент, когда Explorer закончит печать? [D7, Win2k, WinXP]
Darrin © (2005-01-31 12:01:00)Доброго времени суток, Мастера.
Подскажите решение следующей проблемы:
Мне необходимо узнать момент, когда Internet Explorer, с которым я общаюсь через OLE, закончил печать. Это необходимо, что бы закрыть экземпляр Эксплорера, после окончания печати.
procedure TbtkHTMLReport.PrintReport;
var
IE: Variant;
vaIn, vaOut: OleVariant;
IWb: IWebBrowser2;
begin
try
IE := CreateOleObject('InternetExplorer.Application');
except
raise Exception.Create('Ошибка печати.' + #10#13 + 'В системе отсутствует Internet Explorer.');
end;
try
IE.Navigate(TemplateFileName);
if supports(IE, IWebBrowser2, IWb) then
IWb.ExecWB(OLECMDID_PRINT,
OLECMDEXECOPT_PROMPTUSER {- Показывать диалог выбора принтера}
{OLECMDEXECOPT_DONTPROMPTUSER {- Не показывать диалог выбора принтера}, vaIn, vaOut);
finally
IE := null;
end;
end;
Вся проблема в том, что в блок finally я попадаю сразу, после вызова IWb.ExecWB, не дожидаясь момента, когда IE завершит печать.
Зарание спасибо.
pasha_golub (2005-01-31 14:19:00) [1]Darrin © (31.01.05 13:53) [2]
А-а-а, понял...
pasha_golub (2005-01-31 14:19:00) [2]Darrin © (31.01.05 13:53) [2]
А-а-а, понял...
Darrin (2005-01-31 13:53:00) [3]>> pasha_golub © Как бы ни так...
После выполнения
IWb.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER , vaIn, vaOut);
Должен открыться диалог печати, и он появляется, но как только делается
IE := null
Экплорер закрывается, и диалог печати исчезает.
pasha_golub (2005-01-31 12:36:00) [4]Ничего стращного, после того как выполнится метод печати Эксполрера, все задачи по печати берет на себя система. Можешь смело закрывать.