0
我想实现的是使用多字代码打印到特定的打印机。 那种方式使用使用MS Office Word打印到特定的打印机(多线程,无默认打印机使用)
Word.Application.ActivePrinter = "printer name";
它改变了Windows上的默认打印机,并用它当我打印。 在多线程环境中,其他线程可以在其活动打印机的单词对象上进行更改,并且它将在所有单词上进行更改。活动打印机,因为它们被“绑定”到默认打印机。 现在我已经在活动引导器和打印输出()方法上使用了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" });
有了这个,我可以一次打印多个文档。
我不认为它支持运行Word的多个实例,或者试图多线程它。 – ZippyV
我在自己的实例中运行每个单词,并且除了活动打印机之外它还能正常工作,发现我可以使用wordbasic,我似乎无法在我的机器上工作 –