我想要实现的是用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