转载 python执行exe程序(win32process.CreateProcess)
CreateProcess
原文:https://www.cnblogs.com/carlvine/articles/7681432.html
为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数。其函数原型如下所示。
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles ,dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
其参数含义如下。
appName:可执行的文件名。
commandLine:命令行参数。
processAttributes:进程安全属性,如果为None,则为默认的安全属性。
threadAttributes:线程安全属性,如果为None,则为默认的安全属性。
bInheritHandles:继承标志。
dwCreationFlags:创建标志。
newEnvironment:创建进程的环境变量。
currentDirectory:进程的当前目录。若执行多个相同的exe时提示相同目录已存在应用,则需对该字段赋值。
startupinfo :创建进程的属性。
CreateProcess调用exe与ShellExecute调用略有不同,主要是参数的传递不同。接下来以例子说明
def paperless_estamp_program(path='..//path//programe.exe'):
try:
ifexistexe=os.system('tasklist|findstr "programe.exe"')
if ifexistexe==0:
os.system('taskkill /f /im "programe.exe"')
time.sleep(1)
handle=win32process.CreateProcess(path, '', None , None , 0 ,win32process.CREATE_NEW_CONSOLE , None , None ,win32process.STARTUPINFO())
win32event.WaitForSingleObject(handle[0],2)
logger.info('程序开启成功')
except Exception:
logger.exception('开启程序失败!')
WaitForSingleObject(handle, milisecond)
- handle : 要操作的进程句柄
- milisecond: 等待的时间,如果为-1,则一直等待.