这就是我想要做的。
我有一个脚本,当前刚开始打印一条消息。等待5秒,并打印另一条消息,然后要求用户按任意键结束。
我有一个Qt应用程序,它需要调用这个脚本,然后退出。我希望打开控制台窗口来显示脚本文本,并且这个新过程能够在Qt应用程序完成后继续。
在windows中,我的脚本叫做"update.bat“。
所以我试过了:
QProcess::startDetached("update.bat");
QCoreApplication::quit();
但是控制台(windows one)不会打开(所有输出都是QtCreator格式),而且在应用程序结束后肯定不会继续。
有没有办法用Qt做到这一点呢?
如果可能的话,我不想依赖windows的CreateProcess,而是使用Qt解决方案。
编辑:
我也尝试过setCreateProcessArgumentModifier和用命令/k启动update.bat脚本,结果都是一样的。输出被重定向到QtCreator控制台,并且当在Qt之外执行应用程序时什么也不会发生(这都是在您按下按钮时发生的)。
QProcess p;
// QProcess process;
// process.setCreateProcessArgumentsModifier([] (QProcess::CreateProcessArguments *args)
// {
// args->flags |= CREATE_NEW_CONSOLE;
// args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
// args->startupInfo->dwFlags |= STARTF_USEFILLATTRIBUTE;
// args->startupInfo->dwFillAttribute = BACKGROUND_BLUE | FOREGROUND_RED
// | FOREGROUND_INTENSITY;
// });
p.startDetached("cmd.exe",QStringList() << "/k" << "update.bat");
发布于 2021-07-12 22:22:53
所以这不是我在想办法。这更像是我在做搭桥手术。
基本上,使用system works启动脚本。但我设法让它工作的方式是这样的:
终止应用程序作为脚本的第一步
这对于一些事情来说并不理想,主要是我在几个地方看到调用系统不是很安全。但是,因为脚本本身是由应用程序生成的,所以在我的例子中,它对于我的目的来说已经足够好了。
https://stackoverflow.com/questions/68347503
复制相似问题