繁体   English   中英

C#System.Diagnostics.Process动词问题

[英]C# System.Diagnostics.Process verb issue

我有一个用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()方法时,它运行的是两个动词,而不是我指定的一个动词(“打印”)。 它正在运行“打开”和“PrintTo”,它使原始文件的应用程序打开并挂起应用程序(即jpg打开Windows传真和图片查看器)。 我的问题是如何在Process.Start()方法中使用“Print”动词?

先感谢您

什么是strInputFilePath发送? 文档说只发送文件名,所以如果你发送可能导致问题的整个路径。

不,发送没有扩展名的文件名将失败。

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

我猜想以这种方式打印.doc文件可能工作正常,而其他文件类型可能无法正常工作。

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

您是否尝试过研究是否可以使用命令行参数执行Adobe Reader来完成同样的事情? 有时候依赖shell是不确定的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM