为了账号安全,请及时绑定邮箱和手机立即绑定

从python运行外部EXE

从python运行外部EXE

慕的地8271018 2021-03-28 19:15:57
我正在从python应用程序运行几个便携式应用程序。考虑以下代码:import win32com.shell.shell as w32shellimport osimport sysimport win32process as processPORTABLE_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)如果我更改PORTABLE_APP_LOCATION为CDBurnerXP便携式版本的路径,并使用ShellExecuteEx选项而不是CreateProcess,则可以看到该进程已在Windows Task Manager上启动,但该应用程序的实际窗口不可见。对于其他EXE(例如GIMP的便携式版本),在运行后确实会出现这种情况。我认为这种差异来自可执行文件的属性。有人知道是什么原因造成的吗?3)Windows在什么条件下提示“您确定要运行此EXE”?我相信CDBurnerXP已使用证书签名,但是当尝试从python内部运行此EXE时,Windows仍然有时会弹出此问题。
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

关于第一个问题,您应该注意,使用pythonw.exe运行时执行python代码时,您的sys.stdout缓冲区限制为4096字节,并且在溢出时将抛出IOError,因为代码正在无窗口运行,因此您将看不到IOError。


查看完整回答
反对 回复 2021-04-02
  • 2 回答
  • 0 关注
  • 328 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号