我想要做的是让它以横向模式打印而不显示对话框。这是我到目前为止所拥有的:
((mshtml.IHTMLDocument2)Browser.Document.DomDocument).execCommand("Print", true, 0);
我知道在横向模式下打印的指令需要通过第三个参数发送,但我不知道如何构造第三个参数来执行此操作。任何人都可以就如何使最后一个论点实现我的目标给我一些帮助吗?
我想要做的是让它以横向模式打印而不显示对话框。这是我到目前为止所拥有的:
((mshtml.IHTMLDocument2)Browser.Document.DomDocument).execCommand("Print", true, 0);
我知道在横向模式下打印的指令需要通过第三个参数发送,但我不知道如何构造第三个参数来执行此操作。任何人都可以就如何使最后一个论点实现我的目标给我一些帮助吗?
我主要坚持使用桌面应用程序,我不知道如何做你想做的事。但我确实快速浏览了 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
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# 应用程序中做到这一点的方式。