C# ProcessStartInfo和Winword可能存在问题?

C# ProcessStartInfo和Winword可能存在问题?,c#,.net,printing,processstartinfo,C#,.net,Printing,Processstartinfo,此代码有效,因为文档已成功打印到默认打印机 public static void OpenMSWord() { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "WINWORD.EXE"; startInfo.Arguments = "/q /n"; startInfo.Verb = "Print";

此代码有效,因为文档已成功打印到默认打印机

    public static void OpenMSWord()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "WINWORD.EXE";
        startInfo.Arguments = "/q /n";
        startInfo.Verb = "Print";
        startInfo.FileName = "C:\\Test Page.docx";
        Process.Start(startInfo);

    }
问题: info.Arguments根本就不起作用。“/q”应停止启动屏幕。我已经分别使用

    public static void OpenMSWord()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "WINWORD.EXE";
        startInfo.Arguments = "/q /n";
        Process.Start(startInfo);


    }
这将处理参数。 正如预期的那样,“/q”会在加载过程中停止winword弹出窗口

我使用的是.NET4.0框架。 这是作为控制台应用程序完成的

这里有没有我遗漏的简单的东西


提前感谢您在这方面提供的任何帮助或建议。

您应该将文件名作为参数的一部分

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "WINWORD.EXE";
startInfo.Arguments = "/q /n C:\\Test Page.docx";
startInfo.Verb = "Print";
Process.Start(startInfo);
您正在用要打开的文档覆盖可执行文件名<代码>进程。由于docx文件和winword之间存在文件关联,因此Start可以处理文档,但将忽略
参数

 public static void printThread(object fiObject)
        {

            FileInfo fi = (FileInfo)fiObject;
            try
            {

                Microsoft.Office.Interop.Word.Application wordInstance = new Microsoft.Office.Interop.Word.Application();
                //MemoryStream documentStream = getDocStream(); 
                FileInfo wordFile = new FileInfo(fi.FullName);
                object fileObject = wordFile.FullName;
                object oMissing = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Word.Document doc = wordInstance.Documents.Open(ref fileObject, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                doc.Activate();
                doc.PrintOut(oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
                Console.WriteLine("Printed " + fi.FullName);
            }

            catch (Exception ex)
            {
                Console.WriteLine("Error:  " + ex);
            }


        }
其中fiObject是一个文档路径。fi.FullName可以替换为文件位置字符串

经过大量的网上搜索,我找到了上面提供的我想要的。也就是说,Microsoft word不会打开,文档会发送到打印机

代码基于此博客。这家伙的功劳。 方法#3是我所遵循的

编辑1 **doc.PrintOut()中的第一个参数是“Background”,Micrsoft网站将其描述为 “如果为true,则在Microsoft Office Word打印文档时继续自定义代码。”
换句话说,PrintOut方法将停止代码的执行,直到文档被发送到打印机。将出现一个小弹出窗口。如果您有一个打印多个文档的循环,以便给它们处理时间,这一点非常重要。

谢谢您的回复。不幸的是,您的答案中的代码返回了以下错误。{“没有应用程序与此操作的指定文件关联”}我已尝试startInfo.Arguments=“C:\\Test Page.docx”;这也给出了一个错误。