2012-11-09 21 views
5

特定のフォルダを監視し、このフォルダに置かれているファイルを印刷するサービスを作成しています。私は印刷するフォルダに送ることができる様々なファイルタイプに問題があります。ファイルタイプの印刷

私の最初の試みはMicrosoft Officeファイルです。私がしようとしているのは、ファイルを印刷するためにオフィスを始めることです。それはキャッチのようなものですが、私は実際にライブラリなどを使用していません。

これまでのところ、この方法が有効でしたが、Officeアプリケーションがコンピュータで起動していないときに、Officeはユーザーの頭文字を要求します。したがって、この場合、私のアプリケーションはプログラマチックにこれをやっているので動作しません。

 ProcessStartInfo info = new ProcessStartInfo(myDocumentsPath); 
     info.Verb = "Print"; 
     info.CreateNoWindow = true; 
     info.WindowStyle = ProcessWindowStyle.Hidden; 
     Process.Start(info); 

現在、私はMicrosoft Officeファイルを試していますが、私は他のタイプにも同様のアプローチを適用します。

最初のOffice実行で必要とされるイニシャルを回避するにはどうしてですか?

また、私の問題に対するより良いアプローチはありますか?

ご協力いただきありがとうございます。

+0

VBコードですが、Officeアプリケーションからのダイアログを回避する方法やダイアログを閉じる方法を見つけるのに役立ちます。http://support.microsoft.com/kb/259971 –

答えて

1

実際にできることはありません。サポートする予定の各タイプのファイルを印刷するアプリケーションでは、アプリケーションが正しく構成されていることを確認する必要があります。

これは、オフィス(out-of-process COMサーバーとして実行されるため)では、印刷を実行しているアカウントで実行する必要があるため、イニシャルを入力できるようになり、プロンプトは表示されませんサーバーがそれを印刷しようとしたとき。

他のすべてのアプリケーション(アプリケーションを実行することを前提としています)では、プロセスを実行して正しく構成するアカウントとして実行する必要があります。

0

Winternalsのregmonレジストリアクティビティモニタを使用して、WindowsがWindowsレジストリにイニシャルを格納する場所を特定し、印刷前にこれらのキーを書き留めます。

+0

これはオフィスの問題に役立ちますが、他のアプリケーションでは役に立ちませんアプリケーションが最初に実行されたときに1回の初期化が実行される可能性があります。実際の問題のほんの一部だけを解決します。 – casperOne