0

私が達成したいのは、ワードマルチスレッドで特定のプリンターに印刷することです。使用方法

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" });

これで一度に複数のドキュメントを印刷できます。

4

1 に答える 1

0

解決:

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

于 2013-01-24T13:56:19.600 に答える