为什么这个程序可以正确显示消息框,但是不能设置错误级别?
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MessageBox(NULL, _T("This should return 90 no?"), _T("OK"), MB_OK);
return 90;
}
我将上面的代码编译成了一个名为a.exe的可执行文件。然后在命令提示符中执行了以下命令:
c:\> a.exe
(message box is displayed, I press ok)
c:\> echo %ERRORLEVEL%
0
如果在返回之前使用
exit(90);
,我会得到相同的结果。它仍然显示为0
。我还尝试使用
CreateProcess
启动程序,并使用GetExitCodeProcess
获取结果,但它也向我返回0
。我进行了错误检查以确保一切都正确启动。我最初在一个更复杂的程序中看到了这个问题,所以我制作了这个简单的程序来验证这个问题。结果是相同的,所有具有
WinMain
的程序总是返回0
。我尝试过x64、x86和unicode和MBCS编译选项。所有都给出
0
作为错误级别/状态代码。