exe重启自己,WinExec非阻塞、system阻塞

使用bat脚本,先杀死exe进程,再启动exe

restart.bat

@echo off
::注意保存编码格式为ANSI,否则中文乱码
taskkill /f /im "Restart.exe"

echo "exe进程停止成功"

::休眠10s
timeout /t 10 /nobreak
start "" "E:\Restart\x64\Debug\Restart.exe"

echo "exe进程启动成功"

控制台程序 Restart.exe

main.cpp

#include<Windows.h>
int main()
{
    Sleep(5000);
    //WinExec("restart.bat", SW_HIDE);    //非阻塞
    system("restart.bat");                //阻塞    
}

restart.bat放到生成的Restart.exe路径中,双击exe即可。

注意,WinExec和system都是执行脚本的函数,但是前者是非阻塞的,后者是阻塞的。

使用”非阻塞“代码时,提示没找到进程。原因是程序已经执行完毕,exe已经退出,脚本才执行起来,其实脚本没有问题。

 建议使用”阻塞“代码来执行脚本。

posted @ 2024-01-17 21:43  夕西行  阅读(165)  评论(0编辑  收藏  举报