私が達成したいのは、ワードマルチスレッドで特定のプリンターに印刷することです。使用方法
Word.Application.ActivePrinter = "printer name";
Windowsのデフォルトプリンターを変更し、印刷時にそれを使用します。ただし、マルチスレッド環境では、他のスレッドが単語オブジェクトでアクティブなプリンターを変更する可能性があり、デフォルトのプリンターに「バインド」されているため、すべての word.ActivePrinter で変更されます。今のところ、アクティブなプリターと 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" });
これで一度に複数のドキュメントを印刷できます。