1

我通过创建一个System.Diagnostics.Process对象然后将StartInfo动词设置为“打印”来打印文档,然后调用 processStart()方法。

我希望隐藏这个打印过程,所以我正在设置CreateNoWindow = trueWindowStyle = ProcessWindowStyle.Hidden. 但在打印过程中仍会出现应用程序(Word 或 Acrobat)。

我知道如果为进程设置了用户名或密码并且我已经调试并验证它们是空的,那么隐藏的进程设置将被忽略。我什至尝试将它们明确设置为 NULL 无济于事。

我想知道打印操作是否使应用程序表现得好像它需要用户干预(Word 显示“打印文档..”对话框),这否定了隐藏它的设置。

我正在使用 .Net 2.0、C#、Word 2007 和 Windows Vista。

我的实际代码如下:

System.Diagnostics.Process shellProcess = new System.Diagnostics.Process();
shellProcess.StartInfo.FileName = fullFileName;                   
shellProcess.StartInfo.CreateNoWindow = true;
shellProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
shellProcess.StartInfo.Verb = "print";
shellProcess.Start();

非常感谢您的帮助...

请注意,我知道我可以使用 Word 或 Acrobat API 来实现相同的目标,但这个问题专门针对 shell 进程的可见性。

4

2 回答 2

3

StartInfo.WindowStyle 被传递给应用程序,应用程序可以用它做任何事情(它可以使用它或忽略它)。

而且我不确定,但我认为 CreateNoWindow 仅适用于控制台应用程序。

一旦进程启动,您将无法控制它,并且该进程可以显示它想要的任何 UI,您最好使用特定的程序选项(对于像 Dave 建议的 Office 使用自动化,我不了解 Acrobat) .

于 2009-02-11T19:12:39.343 回答
1

如果要打印 Word 文档而不实际出现在窗口中,则需要改用 Office 自动化。Microsoft 提供了 Office 自动化程序集(我认为它们默认与 Office 一起安装。) 是一篇关于如何做到这一点的文章。我实际上并没有尝试过代码,但我做了一些自动化操作,快速阅读它看起来不错。

是 Microsoft 关于 Office 自动化的文章。

于 2009-02-11T17:19:35.560 回答