2009-10-08 5 views
5

さまざまなタイプの文書を(プログラムで)印刷するには、Windowsに(デフォルトの関連アプリケーションを使用して)それを実行するように依頼します。これを(.NETまたはC++/Win32 APIで)どのように行うことができますか?文書の印刷をWindowsに依頼するにはどうすればよいですか?

たとえば、MS OfficeとAcrobat Readerがマシンにインストールされている場合、Acrobat ReaderでPDFファイルを印刷し、MS WordでDOCファイルを印刷する必要があります。しかし、MS Officeがインストールされていない場合、DOCファイルはワードパッドまたはOpenOffice.org Writerをインストールした場合や、現在そのタイプのファイルのデフォルトアソシエーションであるアプリケーションを使用して印刷する必要があります。

答えて

6

ShellExecute機能を使用してみてください。例えば

は、Cに:

ShellExecute(my_window_handle, "print", path_to_file, NULL, NULL, SW_SHOW); 
ここ
+0

この度はありがとうございます。 –

5

コールShellExecutelpOperationパラメータには "print"を使用します。

+2

すべてのファイルは、この方法で印刷することができるわけではありません。主張は、Windowsエクスプローラで "印刷"コンテキストメニューを持つファイルで通常動作するということです。私のシステムでは、HTMLとDOCは除外されています。私はMS Officeを持っていませんが、Open Office *と* MS Word Readerがあります。それでも、偽のキーボードやマウスのメッセージを送信することでアプリケーションを "スクリプト"するものを書くのに手間がかからないので、おそらくあなたができるほど良いでしょう。 – Steve314

+0

ありがとうございました。 –

+1

スティーブ、Open OfficeとWord Readerが "印刷"動詞を扱うことができるように登録していないと、それらの*プログラムの欠点です。ドキュメントを印刷するアプリケーション固有の方法、特にHTMLやWordのような複雑な形式を書くことは期待できません。 –

4

は、C#のためのいくつかのコードです:

public void ShellExecute(string filename, string verb) 
    { 
     System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(); 
     si.UseShellExecute = true; 
     si.FileName = filename; 
     si.Verb = verb; 
     System.Diagnostics.Process.Start(si); 
    } 
+0

C#の例をありがとうございます。 –

関連する問題