为什么Windows二进制文件在64位计算机上的行为不同

时间:2016-09-07 08:39:56

标签: c++ windows qt

我的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";

0 个答案:

没有答案