我想要实现的是使用 word 多线程打印到特定的打印机。它的工作方式
Word.Application.ActivePrinter = "printer name";
它会更改 Windows 上的默认打印机,并在我打印时使用它。但是,在多线程环境中,其他线程可以在其 word 对象上更改活动打印机,并且它将在所有 word.ActivePrinter 上更改它,因为它们被“绑定”到默认打印机。现在我刚刚在活动的 priter 和 printout() 方法上使用了 lock()。但是这种方法太慢了,整个更改活动打印机需要相当长的时间。并且锁定它会使整个程序变慢。
所以我要问的是,有没有一种方法可以在不使用/更改默认打印机的情况下打印到指定的打印机,如果是这样,我应该在哪里查找以及在哪里可以找到它?
亲切的问候
编辑:发现这个:
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" });
有了这个,我可以一次打印多个文档。