2012-06-19 119 views
1

我想读取所有文件的文件夹并以编程方式打印它们,就像我右键单击>打印一样。以编程方式右键单击并打印文件

我知道打印这种方式是默认应用程序特定的。所以我认为这是一个两步骤的过程:如何检查具有默认应用程序的文件是否支持打印;以及我如何实际发出打印文件的命令?

正在打印这种叫做“shell命令打印”的东西吗?将需要正确的词汇来搜索信息。

任何其他更好的方式,你会建议这项任务?

编辑:文件类型可以是简单的.txt文件以外的任何其他文件,例如, PDF,DWG,JPEG等

回答

1

可以使用Directory.GetFiles枚举文件夹中的文件,然后使用的Process.Start的ShellExecute的模式,在每个依次文件执行“打印”动词(命令)。

请参阅Process.Start here,并且您需要传递ProcessStartInfo,其中UseShellExecuteVerb设置得当。

通过询问操作系统以解决如何打印出来,你不用担心的复杂性如何打印不同类型的数据,等等

+0

你能告诉我们Shell命令的语法吗? –

+1

@JeremyThompson'print/d:\\ printserver \ sharenamedrive:\ path \ filename'根据Rohan Durve在他的回答中的链接。 – Jake

1

我相信这是你在找什么:

http://support.microsoft.com/kb/314499

如果不工作,那么还有很多其他方法使用宏来做到这一点或通过编写一个非常简单的视觉基本程序来为你做。

评论如果这不起作用,我会编辑我的帖子。

问候〜

+0

这种方法已经通过我对所有被测试打印机直接支持的文件类型。 –

-1

As you said: You want to read files in a folder and automatically print them

所以,一个选择是读取文件>打开的FileStream和发送打印流。这里是一个打印流中的样品 -

http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.print.aspx

通知的Printing()功能于样品中。 [我还没有尝试过,但看起来实现]

// Print the file. 
    public void Printing() 
    { 
     try 
     { 
      streamToPrint = new StreamReader (filePath); 
      try 
      { 
       printFont = new Font("Arial", 10); 
       PrintDocument pd = new PrintDocument(); 
       pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); 
       // Print the document. 
       pd.Print(); 
      } 
      finally 
      { 
       streamToPrint.Close() ; 
      } 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

这里是多一个选择 -http://channel9.msdn.com/forums/TechOff/151242-How-to-send-a-PDF-to-a-printer/ --- See the last post

相关问题