2014-12-26 211 views
0

我正在向打印機直接打印PDF,但我想在後臺執行此操作。 目前一切正常,但您可以看到Adobe正在啓動並打開一個文檔,同時我希望它保持隱藏狀態。ProcessStartInfo.CreateNoWindow不起作用

爲此,我試圖用:

Process1.StartInfo.CreateNoWindow = True 

但它不會工作,而我所做的一切一樣寫成: MSDN

需要提及的是,你應該把

psi.UseShellExecute = False 

爲了讓CreateNoWindow工作,但是當我把它放在我的代碼中時,我收到一條錯誤消息:系統找不到指定的文件,whil沒有這條線,它的工作。

下面你可以找到整個代碼:

  Dim Process1 As New System.Diagnostics.Process 
      Dim psi As New ProcessStartInfo("AcroRd32.exe", "/t " + temppdf + " " + General.pdfprinter + "") 
      'psi.UseShellExecute = False 
      psi.CreateNoWindow = True 
      Process1.StartInfo = psi 
      Process1.Start() 
      Process1.WaitForInputIdle() 
      Process1.Kill() 

任何想法?

+1

CreateNoWindow只能在控制檯模式程序的影響。 Acrobat Reader不是。錯誤的名字,他們應該選擇「CreateNoConsole」。您可以要求它使用WindowStyle *最小化它的主窗口,如果它不感覺像垃圾郵件一樣可能會遵從它。 –

+0

感謝Hans, 因此,似乎在活動期間無法隱藏Acrobat? – GertDeWilde

+0

我給了你一個非常具體的提示,這取決於你去嘗試。 –

回答

0

這個怎麼樣?

定義功能的ShowWindow:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
Private Shared Function ShowWindow(ByVal hwnd As IntPtr, ByVal nCmdShow As ShowWindowCommands) As Boolean 
End Function 

然後調用它:

Process1.Start() 
ShowWindow(Process1.MainWindowHandle, 0) 
+0

感謝您的迴應,但同樣的事情正在發生。 – GertDeWilde

+0

正確編寫的GUI程序會忽略ProcessWindowStyle.Hidden。因爲這是一個陷阱,用戶只能通過使用任務管理器來停止程序。此外,在快捷方式屬性對話框中不提供此選項。 –

+0

我試過了,但它也沒有工作。 pdf在進入showwindow函數之前打開。 – GertDeWilde