2012-10-03 63 views
0

我在Windows上使用子進程來啓動IrfanView以使用命令行開關將TIFF文件轉換爲PDF。使用隱藏所有窗口的子進程啓動程序

我正在通過幾個TIFF文件夾,併爲每個文件調用命令。保存PDF時,IrfanView會顯示一個標題爲「保存PDF」的對話框來顯示進度。

該對話框僅顯示一瞬間,但抓取窗口焦點,以便在我的腳本在後臺運行時無法使用計算機。我試過使用subprocess.STARTUPINFO值來隱藏窗口,而現在隱藏的對話框似乎仍然抓住焦點。

下面是我如何調用IrfanView應用程序。

startup_info = subprocess.STARTUPINFO 
startup_info.dwFlags = 1 
startup_info.wShowWindow = 0 

subprocess.call(['i_view32.exe', 'c:/input.tif', '/convert=c:/output.pdf'], startupinfo=startup_info) 

有沒有人知道一種啓動應用程序的方式,其窗口隱藏並且沒有竊取焦點?我很高興嘗試一些事情 - 即使是一個包裝應用程序,然後調用IrfanView會做,如果這樣的程序存在。我只需要這個Windows,所以我不需要跨平臺的解決方案。

我知道我也可以使用GraphicsMagick或類似的代替,但IrfanView在匹配輸入文件的壓縮格式方面做得更好,所以理想情況下我希望使用IrfanView來實現它。

+0

'shell = False'請參閱http://docs.python.org/library/subprocess.html#popen-constructor –

+0

謝謝,但這沒有什麼區別。 'shell'在默認情況下被設置爲'False'。 –

+0

Windows允許您創建第二個桌面並在那裏啓動子進程。我不知道你是否可以用Python調用必要的API。 –

回答

0

這取決於支持非交互模式的應用程序。 subprocess可以防止在啓動應用程序時打開控制檯窗口的調用,但它不能阻止應用程序本身打開窗口。

谷歌搜索的IrfanView返回article描述了「隱藏」命令行選項 - 它可能是隱藏= 15將有些你想要做什麼,在泄漏一束看不見的殭屍窗口的風險。該程序顯然沒有真正/批處理選項,不會首先打開對話框或其他窗口。

+0

感謝您的回覆。我曾嘗試過,但隱藏命令行選項用於隱藏IrfanView UI元素,如工具欄。我看到的對話框實際上來自PDF插件(ImPDF),並且似乎沒有任何命令行選項傳遞給IrfanView來控制其UI。 –