execCommand («Print», false, ID'tUnderstandThisArgument) - PullRequest
1 голос
/ 12 февраля 2011

Я пытаюсь напечатать это в альбомной ориентации без отображения диалогового окна. Это то, что я до сих пор:

((mshtml.IHTMLDocument2)Browser.Document.DomDocument).execCommand("Print", true, 0);

Я знаю, что инструкция для печати в ландшафтном режиме должна быть отправлена ​​через третий аргумент, но я не знаю, как создать третий аргумент для этого. Кто-нибудь может мне помочь, чтобы этот последний аргумент достиг моей цели?

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

Я в основном придерживаюсь настольных приложений и не знаю, как делать то, что вы хотите.Но я быстро взглянул на документацию msdn, и кажется, что команда «Печать» (IDM_EXECPRINT) может быть не тем, что вы ищете?Согласно документации для метода, второй параметр должен быть ложным, если вы не хотите отображать пользовательский интерфейс.Это звучит хорошо, за исключением того, что похоже, что команда IDM_EXECPRINT всегда отображает диалоговое окно независимо («Пользовательский интерфейс: Да. Установите параметр в true или опустите»).

msdn документация: IHTMLDocument2 :: execCommand Method , IDM_EXECPRINT

Кто-то, пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что вы можете искать другую команду.

Редактировать: Возможно, вам повезет больше с командой IDM_PRINT из mshtmcid.h, это необязательное диалоговое окно для этой команды.Вот пример приложения (на C ++): http://msdn.microsoft.com/en-us/library/bb250434(VS.85).aspx

0 голосов
/ 12 февраля 2011

ДОПОЛНЕНИЯ: Это от Microsoft http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.defaultpagesettings%28v=vs.71%29.aspx

public void Printing()
{
   try
   {
      streamToPrint = new StreamReader (filePath);
      try
      {
         printFont = new Font("Arial", 10);
         PrintDocument pd = new PrintDocument(); 
         pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
         pd.PrinterSettings.PrinterName = printer;
         // Set the page orientation to landscape.
         pd.DefaultPageSettings.Landscape = true;
         pd.Print();
      } 
      finally
      {
         streamToPrint.Close() ;
      }
   } 
   catch(Exception ex)
   { 
      MessageBox.Show(ex.Message);
   }
}

Так что вы, вероятно, просто замените pd в приведенном выше примере на ваш документ.


ОРИГИНАЛЬНЫЙ ОТВЕТ: Возможно интегрировать:

DefaultPageSettings.Landscape = true;

Так что, может быть, что-то вроде этого:

((mshtml.IHTMLDocument2)Browser.Document.DomDocument).DefaultPageSettings.Landscape = true;
((mshtml.IHTMLDocument2)Browser.Document.DomDocument).execCommand("Print", true, 0);

Немного нанести удар в темноте, поскольку C # - слабое место, ноЯ полагаю, что именно так я однажды сделал это из приложения на C #.

...