0

Python アプリからいくつかのポータブル アプリを実行しています。

次のコードを検討してください。

import win32com.shell.shell as w32shell
import os
import sys
import win32process as process

PORTABLE_APP_LOCATION = "C:\\Windows\\System32\\calc.exe"

#This function runs a portable application:
def runPortable():
    try:
        startObj = process.STARTUPINFO()
        process.CreateProcess(PORTABLE_APP_LOCATION,None,None,None,8,8,None,None,startObj)
        # OR
        #w32shell.ShellExecuteEx(lpFile=PORTABLE_APP_LOCATION)
    except:
        print(sys.exc_info()[0])
runPortable()

1) pythonw または python からのこのコードの実行の違いを期待する必要がありますか?

2) CDBurnerXP のポータブル バージョンPORTABLE_APP_LOCATIONへのパスに変更し、 CreateProcess の代わりに ShellExecuteEx オプションを使用すると、プロセスは Windows タスク マネージャーで開始されますが、アプリの実際のウィンドウは表示されません。これは、 GIMPのポータブル バージョンなど、実行後に表示される他の EXE では発生しません。この違いは、実行可能ファイルの特性によるものだと思います。誰がこれを引き起こしているのか知っていますか?

3) Windows が「この EXE を実行してもよろしいですか?」というメッセージを表示する条件は何ですか? CDBurnerXP は証明書で署名されていると思いますが、Python 内からこの EXE を実行しようとすると、Windows でこの質問が表示されることがあります。

どうもありがとう。

4

2 に答える 2

1

最初の質問について、 pythonw.exeランタイムを使用して python コードを実行する場合、 sys.stdoutバッファは4096バイトに制限され、オーバーフローすると IOError がスローされることに注意してください。コードはウィンドウなしで実行されているため、表示されません。

于 2013-06-20T07:56:54.967 に答える
0

私はこの分野の初心者です。これはあなたを助けることができるかもしれません

使用subprocess.call、詳細はこちら

import subprocess
subprocess.call(["C:\\temp\\calc.exe"])

また

import os
os.system('"C:/Windows/System32/notepad.exe"')

お役に立てば幸いです...

于 2013-06-17T12:04:21.903 に答える