从Windows服务打印

问题描述:

如何在不需要任何用户交互的情况下从Windows服务打印特定打印机上的文档?从Windows服务打印

一个字符串或文本文件。也许Crystalreport?

谢谢。

问题不在于如何从Windows服务或应用程序打印,如果您不想要任何用户交互要求您必须指定所有打印参数,而不需要显示打印对话框(因为Windows服务无法访问UI,所以您无法显示)。

在这里看到:http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.aspx

尝试创建一个多线程服务。一旦您使用管理员预先创建服务,它将不会受到用户的干扰。 (其实我没有理解“不需要任何用户交互”的目的)

+0

@大卫很好,因为他也承认,他不明白这个问题的那部分是不公平说他的回答可能不正确。你的评论有点苛刻。 @pawan,我认为OP需要一种方法,可以通过某些事件或其他触发器以编程方式自动打印,而这些触发器不会由用户启动。因此,大卫指出,这种服务是否是多线程的在这种情况下是无关紧要的。 – Joe 2011-02-09 13:31:14

+0

@David,ya我不明白这个问题,但我试着最好地回答我的水平。但我正在学习......不要担心,那是因为批评我。一天,当我回答比你更好。 @joe ...感谢,下次我在回答之前试着理解这个问题。 – PawanS 2011-02-10 06:32:21

有这个使用Crystal Reports另一个讨论: Print without Printer selection dialog

这里还有另外一个用于打印HTML Print html document from Windows Service without print dialog

希望,他们就会让你开始正确的方向。

// Class that handles printing 
class MyPrintDocument : PrintDocument 
    { 
     //... 
    } 
时要打印

 // Create an instance of your printer class 
     MyPrintDocument printer = new MyPrintDocument(); 

     // Set StandardPrintController so status dialog won't appear 
     printer.PrintController = new StandardPrintController(); 

要 '悄悄' 从Windows服务打印,你应该利用Win32 GDI API

如果您正在开发Microsoft .NET应用程序,则可以使用平台调用服务(PInvoke)调用Win32 GDI API进行打印。 Heres a nice PInvoke tutorialTake a look here for Win32 GDI methods etc

这里有更多的信息和关于从微软的DSUI队一个窗口服务打印的例子... take a look