【问题标题】:Why is my hidden process still visible?为什么我的隐藏进程仍然可见?
【发布时间】:2009-02-12 18:30:10
【问题描述】:

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

我希望隐藏这个打印过程,所以我设置了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 进程的可见性。

【问题讨论】:

    标签: c# process printing hidden visible


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 2017-04-17
        • 2016-03-24
        相关资源
        最近更新 更多