0

Windows でサブプロセスを使用して IrfanView を起動し、コマンド ライン スイッチを使用して TIFF ファイルを PDF に変換しています。

私は TIFF のいくつかのフォルダーを処理しており、各ファイルに対してコマンドを呼び出しています。PDF を保存するとき、IrfanView は「Save 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 を使用してこれを機能させたいと考えています。

4

1 に答える 1

0

これは、非インタラクティブ モードをサポートするアプリケーションによって異なります。 subprocessアプリケーションの起動時に呼び出しがコンソール ウィンドウを開くのを防ぐことはできますが、アプリケーション自体がウィンドウを開くのを防ぐことはできません。

irfanviewをグーグルで検索すると、「非表示」コマンド ライン オプションを説明する記事が返されます。非表示のゾンビ ウィンドウが大量にリークする危険性があるものの、hide=15 を使用すると、意図したとおりに動作する可能性があります。プログラムには、そもそもダイアログや他のウィンドウを開くことを控える実際の /batch オプションがないようです。

于 2012-10-03T17:22:49.557 に答える