开发者社区 问答 正文

rpa studo关闭时,会关闭通过studio打开的软件

rpa版本: 3.4.9
系统: win10

举例打开QQ: win32api.ShellExecute(0,"open",r"D:\360Downloads\Software\Tencent\QQ\Bin\QQScLauncher.exe","","",0)

通过此方法在rpa运行后,qq是正常打开的,任务也是正常运行完成, 但是在退出rpa studio开发工具时, 会几乎同时关闭qq,也就是通过studio打开的软件,在sudio退出时,会被关闭, 生产环境用机器人运行也是存在这种情况,

打开其他软件也是如此

展开
收起
1099524530916073 2021-01-28 13:26:16 427 分享 版权
阿里云 AI 助理回答

在RPA(Robotic Process Automation,机器人流程自动化)的场景中,通过代码直接调用系统API来启动应用程序时,确实可能会遇到与父进程(这里是RPA Studio或运行时环境)生命周期绑定的问题。当父进程关闭时,由它启动的子进程(如QQ等应用程序)默认情况下会随着父进程的终止而被关闭。这是因为Windows系统中,默认新创建的进程会继承其父进程的一些属性,包括当父进程结束时,子进程也会随之结束。

为了解决这个问题,可以尝试以下几种方法:

  1. 使用后台模式启动:尽量让启动的应用程序不依赖于RPA工具的进程。这可能需要修改你的代码逻辑,尝试以不同的方式启动应用,比如通过批处理脚本间接启动,并确保该脚本能够使应用程序脱离RPA的进程控制。

  2. Detached Process: 尝试寻找一种方式让进程完全独立运行,而不是作为RPA进程的子进程。具体到Python中,这可能意味着你需要利用更底层的API或者第三方库来实现进程的分离。

  3. 使用Task Scheduler(任务计划程序):如果条件允许,可以在系统层面设置一个定时任务来启动应用程序,这样即使RPA工具退出,也不会影响到已经由系统任务管理器启动的程序。

  4. Subprocess模块高级用法:Python中的subprocess模块提供了更多的控制选项,比如使用Popen函数并设置creationflags=subprocess.DETACHED_PROCESS标志来创建一个完全独立的进程。示例代码如下:

    import subprocess
    
    # Windows下创建独立进程
    subprocess.Popen(r"D:\360Downloads\Software\Tencent\QQ\Bin\QQScLauncher.exe", creationflags=subprocess.CREATE_NEW_PROCESS_GROUP if os.name == 'nt' else 0)
    

请注意,上述代码片段中的CREATE_NEW_PROCESS_GROUP是针对Windows平台的,用于创建一个新的进程组,使得新进程不再受父进程结束的影响。

  1. 外部工具辅助:考虑使用像start /B命令(在批处理文件中)或者其他的第三方工具来帮助你以非阻塞且独立的方式启动应用程序。

在生产环境中部署时,确保对这些改动进行充分的测试,以验证它们是否满足你的需求且不会引入新的问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: