2
  1. 私のアプリケーションは、ユーザーの要求に応じてos.startfileを含むpdfファイルを開いています(プッシュボタン)。ユーザーがもう一度ボタンを押したときにこのPDFを閉じる方法はありますか?これを行わないと、次のエラーが発生します。

    WindowsError:[エラー32]別のプロセスによって使用されているため、プロセスはファイルにアクセスできません:'default_report.pdf'

    編集: Python内で次のようになります:( QPainter::begin(): Returned falseWindowsErrorは実行可能ファイルから発生します)。どういうわけかこのエラーをキャッチできますtryか?少なくとも、PDFを手動で閉じるようにユーザーに依頼するには...

  2. 別の関連する質問。私のアプリケーションは実行可能ファイルとしてコンパイルされ、別のVB6アプリケーションから呼び出されます(これもプッシュボタンで)。Pythonから実行可能ファイルがすでに実行されている(exeファイルは常に同じ場所にある)ことを検出し、この場合は再起動する前に実行可能ファイルを強制終了する方法はありますか?問題は同様です。実行可能ファイルを2回実行すると、競合が発生し始めるため(共通のデータベースを使用しているため)、エラーが発生します。VB6からはどういうわけか動作しません、詳細はわかりません...

    編集:で解決psutil(jheyseによる回答への私のコメントを参照)

ps必要に応じて、exeファイルの作成にPython 3.2、PyQt 4、cx_freezeを使用します。

4

1 に答える 1

2

1.ドキュメントに「関連するアプリケーションが起動されるとすぐにstartfile ()が返されるため、直接可能ではないと思います。アプリケーションが閉じるのを待つオプションはなく、アプリケーションの終了ステータスを取得する方法もありません。 。」

2. Pythonから名前でプロセスを強制終了するには、psutilモジュールを使用できます。このようなもの(次のコードは、開いている場合はWindows電卓を強制終了します):

for p in psutil.process_iter():
    if p.name == 'calc.exe':
        p.kill()
于 2012-07-18T03:15:53.813 に答える