2009-10-08 41 views
5

我希望(以編程方式)打印各種類型的文檔,通過要求Windows執行此操作(使用默認的關聯應用程序)。我該怎麼做(在.NET或C++/Win32 API中)?如何讓Windows打印文檔?

例如,如果我在機器上安裝了MS Office和Acrobat Reader,PDF文件應該由Acrobat Reader打印,DOC文件應該由MS Word打印。但是,如果我沒有安裝MS Office,應使用Wordpad或OpenOffice.org Writer打印DOC文件(如果安裝了後者),或者任何應用程序當前都是該類型文件的默認關聯。

回答

6

嘗試使用ShellExecute函數。

例如,在C:

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

謝謝你的例子。 – 2009-10-08 13:47:35

5

致電ShellExecute。使用「print」作爲lpOperation參數。

+2

並非所有的文件可以打印這種方式。聲明是,它通常適用於在Windows資源管理器中具有「打印」上下文菜單的文件。在我的系統中,不包括HTML和DOC - 我沒有MS Office,但是我有Open Office *和* MS Word Reader。儘管如此,它還是可以做得很好,而不是通過發送虛假鍵盤和鼠標消息來編寫「腳本」應用程序。 – Steve314 2009-10-08 13:47:21

+0

謝謝您的信息。 – 2009-10-08 13:49:17

+1

Steve,如果Open Office和Word Reader沒有註冊自己能夠處理「打印」動詞,那麼這就是*這些程序的缺點。我們不能期望編寫特定於應用程序的方式來打印文檔,特別是像HTML或Word這樣複雜的格式。 – 2009-10-08 14:41:44

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#示例。 – 2009-10-08 14:32:53