Эврика! Я решил это.
Вот как:
При отображении диалога немодальных печатей, вы можете отключить форму вызова в Delphi. Затем вы можете использовать событие OnCommandStateChange, чтобы определить, когда пользователь печатает или отменяет диалог печати.
Пример кода:
WebBrowser1.OnCommandStateChange:=WebBrowser1CommandStateChange;
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER,
vaIn, vaOut);
procedure TForm1.WebBrowser1CommandStateChange(Sender: TObject; Command:
Integer; Enable: WordBool);
begin
if Enabled then
Enabled:=false
else begin
Enabled:=true;
WebBrowser1.OnCommandStateChange:=nil;
end;
end;
Прошу вас людей, чтобы проверить мое решение, поскольку я не уверен в надежности этого кода.
Спасибо!
У меня такая же проблема. протестировало ваше решение: проблема заключается в том, что 'WebBrowser1CommandStateChange' запускается 2 раза перед отображением диалогового окна печати. затем снова срабатывает, когда он закрывается. – kobik
См. Этот [ответ] (http://stackoverflow.com/a/8438967/960757), вопрос сформулирован по-разному, но ['OLECMDEXECOPT_PROMPTUSER'] (http://msdn.microsoft.com/en-us/library /aa769937%28v=vs.85%29.aspx) с параметром ['PRINT_WAITFORCOMPLETION'] (http://msdn.microsoft.com/en-us/library/aa769937%28v=vs.85%29.aspx) сделает диалог модальным. – TLama