1

我想要做的是让它以横向模式打印而不显示对话框。这是我到目前为止所拥有的:

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

我知道在横向模式下打印的指令需要通过第三个参数发送,但我不知道如何构造第三个参数来执行此操作。任何人都可以就如何使最后一个论点实现我的目标给我一些帮助吗?

4

2 回答 2

1

我主要坚持使用桌面应用程序,我不知道如何做你想做的事。但我确实快速浏览了 msdn 文档,似乎“打印”命令 (IDM_EXECPRINT) 可能不是您要找的?根据该方法的文档,如果您不想显示用户界面,则第二个参数应该为 false。这听起来不错,只是 IDM_EXECPRINT 命令看起来总是显示一个对话框,无论如何(“用户界面:是。将参数设置为 true 或省略”)。

msdn 文档: IHTMLDocument2 ::execCommand 方法IDM_EXECPRINT

如果我错了,请有人纠正我,但我想你可能想寻找另一个命令。

编辑:使用 mshtmcid.h 中的IDM_PRINT命令可能会更好,该对话框对于此命令是可选的。这是一个示例应用程序(在 C++ 中):http: //msdn.microsoft.com/en-us/library/bb250434 (VS.85).aspx

于 2011-02-12T04:43:53.517 回答
0

补充:这是来自微软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# 应用程序中做到这一点的方式。

于 2011-02-11T23:36:19.143 回答