我的64位计算机(Windows 10)上有一个小的Qt5-mingw代码。在这段代码中,我使用Qt框架启动了一个notepad.exe并等待它完成执行。这在32位和64位机器上都能正常工作。
现在,相同的代码用于启动其他exe程序,如计算器。在这种情况下,计算器在32位平台上按预期启动,但在64位时,我们不会在计算器运行时等待。
我已经在64位计算机上使用进程监视工具检查了这种行为,似乎exe将自己重新启动到其他pid
。
我如何在calc.exe
运行时等待它?
QProcess notepad;
notepad.start("notepad");
notepad.waitForFinished();
qDebug()<<"notepad will wait for finish";
QProcess calc;
calc.start("calc"); //("C:\\Windows\\System32\\calc.exe"); ("C:\\Windows\\SysWOW64\\calc.exe");
// -- wait while finish() --
// 32-bit: Works fine
// 64-bit: This is where we should wait while calc.exe is running
calc.waitForFinished();
qDebug()<<"calculator will NOT wait for finish";