1

System.Diagnostics.Processオブジェクトを作成し、動詞を「print」に設定してから、processメソッドStartInfoを呼び出して、ドキュメントを印刷しています。Start()

この印刷プロセスを非表示にしたいので、とを設定CreateNoWindow = trueしてWindowStyle = ProcessWindowStyle.Hiddenいます。ただし、アプリケーション(WordまたはAcrobat)は印刷中に表示されます。

プロセスにユーザー名またはパスワードが設定されている場合、非表示のプロセス設定は無視されることを知っています。デバッグして、それらが空であることを確認しました。私はそれらを明示的にNULLに設定して無駄にしようとさえしました。

印刷のアクションによって、アプリケーションがユーザーの介入を必要とするかのように動作するのではないかと思います(Wordは「ドキュメントの印刷..」ダイアログボックスを表示します)。これにより、アプリケーションを非表示にする設定が無効になります。

.Net 2.0、C#、Word 2007、およびWindowsVistaを使用しています。

私の実際のコードは次のとおりです。

System.Diagnostics.Process shellProcess = new System.Diagnostics.Process();
shellProcess.StartInfo.FileName = fullFileName;                   
shellProcess.StartInfo.CreateNoWindow = true;
shellProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
shellProcess.StartInfo.Verb = "print";
shellProcess.Start();

ヘルプは本当にありがたいです...

WordまたはAcrobatAPIを使用して同じことを実現できることは承知していますが、この質問は特にシェルプロセスの可視性に関するものです。

4

2 に答える 2

3

StartInfo.WindowStyle がアプリケーションに渡され、アプリケーションはこれを使用して必要なことを実行できます (使用することも無視することもできます)。

確かではありませんが、CreateNoWindow はコンソール アプリケーションにのみ適用されると思います。

プロセスが開始されると、それを制御できなくなり、そのプロセスは必要なUIを表示できます。特定のプログラムオプションを使用するのが最善の策です(Daveが提案したようなOffice使用の自動化については、Acrobatについては知りません) .

于 2009-02-11T19:12:39.343 に答える
1

Word が実際にはウィンドウに表示されずに Word 文書を印刷する場合は、代わりに Office Automation を使用することをお勧めします。Microsoft は、Office オートメーション アセンブリを利用できるようにしています (既定では Office と共にインストールされていると思います)。 これを行う方法に関する記事を次に示します。私は実際にコードを試したことはありませんが、いくつかの自動化を行っており、簡単に読むと良さそうです。

Office Automation に関する Microsoft の記事を次に示します。

于 2009-02-11T17:19:35.560 に答える