用MS Office Word打印到特定的打印机(多线程,没有默认的打印机使用)



我想要实现的是用word多线程打印到特定的打印机。使用

的工作方式
Word.Application.ActivePrinter = "printer name";

它改变了windows上的默认打印机,并在我打印时使用它。然而,在多线程环境中,其他线程可以在它们的word对象上更改活动打印机,并且它将在所有word对象上更改它。ActivePrinter,因为它们被"绑定"到默认打印机。现在,我只是在活动打印机上使用了lock()和printout()方法。但是这种方法太慢了,整个改变需要一些时间。加上锁,整个程序就变慢了。

所以我问的是,有没有一种方法可以打印到指定的打印机,而无需使用/更改默认打印机,如果是这样,我应该在哪里看,我在哪里可以找到它?

亲切的问候

编辑:发现:

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

我的解决方案:

 object wordBasic = word.WordBasic;
 wordBasic.GetType().InvokeMember("FilePrintSetup",
     System.Reflection.BindingFlags.InvokeMethod,
     null,
     wordBasic,
     new object[] {PrinterName,true },
     null,
     null,
     new string[] {"Printer", "DoNotSetAsSysDefault" });

我可以一次打印多个文档

解决方案:

object wordBasic = word.WordBasic;
wordBasic.GetType().InvokeMember("FilePrintSetup",
   System.Reflection.BindingFlags.InvokeMethod,
   null,
   wordBasic,
   new object[] {PrinterName,true },
   null,
   null,
   new string[] {"Printer", "DoNotSetAsSysDefault" });

发现于:http://support.microsoft.com/kb/216026

最新更新