2009-02-11 61 views
1

我通過創建一個System.Diagnostics.Process對象,然後設置StartInfo動詞「打印」,然後調用進程Start()方法打印文檔。爲什麼我的隱藏進程仍然可見?

我想隱藏此打印過程,所以我設置CreateNoWindow = trueWindowStyle = ProcessWindowStyle.Hidden。但是應用程序(Word或Acrobat)在打印過程中仍然出現。

我知道,如果一個用戶名和密碼設置的過程,我已經通過調試和verifyied它們是空的隱藏進程設置將被忽略。我甚至嘗試明確地將它們設置爲NULL無濟於事。

我想知道如果打印的動作使應用程序的行爲,如果它需要用戶干預(Word顯示「打印文檔..」對話框),該否定的設置將其隱藏。

我使用.Net 2.0,C#,Word 2007和Windows Vista。

我的實際代碼如下:

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或Acrobat API才達到同樣的事情但是這個問題是關於shell進程的可見性的。

回答

2

的StartInfo.WindowStyle被傳遞給應用程序,應用程序可以做任何它想做的(它可以使用它或忽略它)。

我不確定,但我認爲CreateNoWindow只適用於控制檯應用程序。

一旦一個進程開始,你就無法控制它,並且該進程可以顯示任何它想要的UI,最好的辦法是使用特定的程序選項(對於像Dave這樣的Office自動化自動化來說,我沒有了解Acrobat)。

1

如果你要打印Word文檔沒有實際詞出現在一個窗口,你需要使用辦公自動化來代替。 Microsoft使Office自動化程序集可用(我認爲它們默認安裝在Office中)。Here是一篇關於如何執行此操作的文章。我實際上沒有嘗試過這些代碼,但是我已經完成了一些自動化操作,從快速閱讀中看起來很不錯。

Here是Microsoft在Office Automation上的一篇文章。

相關問題