C#系统.诊断.过程动词问题

C#系统.诊断.过程动词问题,c#,system.diagnostics,C#,System.diagnostics,我有一个用C#VS 2008编写的Windows应用程序。此应用程序的目的是将任何文件转换为PDF文件。我发现了可以转换文件的代码,但是我遇到了一个小问题 首先是代码: private void PrintToAdobePDF(string strInputFilePath) { ProcessStartInfo pProcInfo = new ProcessStartInfo(); bool blResult; blRe

我有一个用C#VS 2008编写的Windows应用程序。此应用程序的目的是将任何文件转换为PDF文件。我发现了可以转换文件的代码,但是我遇到了一个小问题

首先是代码:

        private void PrintToAdobePDF(string strInputFilePath)
    {
        ProcessStartInfo pProcInfo = new ProcessStartInfo();
        bool blResult;

        blResult = SetDefaultPrinter(D2P_Adobe_Printer);
        if (blResult)
        {
            pProcInfo.FileName = strInputFilePath;
            pProcInfo.Verb = "Print";
            pProcInfo.CreateNoWindow = true;
            pProcInfo.WindowStyle = ProcessWindowStyle.Hidden;

            Process pProc = Process.Start(pProcInfo);
            pProc.WaitForExit(1000);
            pProc.CloseMainWindow();
            pProc.Close();
        }
我遇到的问题是,当调用Process.Start()方法时,它使用两个动词而不是我指定的一个动词(“Print”)运行。它正在运行“Open”和“PrintTo”,使源于原始文件的应用程序打开并挂起应用程序(即jpg打开Windows传真和图片查看器)。 我的问题是如何在Process.Start()方法中使用“Print”动词


提前感谢您

您为strInputFilePath发送了什么?文档中说只发送文件名,因此如果您发送的是可能导致问题的整个路径。

否,发送不带扩展名的文件名将失败

最终使用System.Diagnostics.Process打印任意文件最多只能是不可预测的。这完全取决于您的操作系统如何处理每种类型的文件,以及您的注册表是否正确配置为处理该文件

我猜以这种方式打印.doc文件可能工作正常,而其他文件类型可能工作不太好


在我看来,您应该找到一些关于允许“自动”打印的文件类型的限制,并为每种类型的文件构建工作解决方案。否则,您会发现许多不可预测的行为。

您是否尝试过研究是否可以使用命令行参数执行Adobe Reader,以完成相同的任务?依赖shell有时是不确定的。

我正在发送路径和原始完整文件名(包括扩展名)(路径是必需的,因为这最终将从服务器中提取文件。我应该只发送不带扩展名的文件名吗?根据文档,是的。如果解决方案存在于同一个服务器上,它应该是可以的。我是一名优秀的程序员,但我以前从未在C#中使用过命令行参数。关于这方面有什么帮助吗?)那太好了。我有Adobe9SDK供我使用。你应该能够直接执行reader程序,传递PDF文件的路径,并包含将打印它的开关。关于执行命令行参数的建议非常有效,谢谢。这非常有意义。我有一个转换图像的方法然而,愚蠢的我删除了它,并且没有将代码保存在任何地方。此外,它没有那么有效,图像也变得一团糟。