python执行exe程序(win32process.CreateProcess)

 CreateProcess

为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数。其函数原型如下所示。 
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles ,dwCreationFlags , newEnvironment , currentDirectory , startupinfo ) 
其参数含义如下。 
appName:可执行的文件名。 
commandLine:命令行参数。 
processAttributes:进程安全属性,如果为None,则为默认的安全属性。 
threadAttributes:线程安全属性,如果为None,则为默认的安全属性。 
bInheritHandles:继承标志。 
dwCreationFlags:创建标志。 
newEnvironment:创建进程的环境变量。 
currentDirectory:进程的当前目录。 
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,则一直等待.
posted @   carlvine  阅读(3844)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示