为什么这个程序能正确显示消息框,却没有设置错误级别?
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
作为错误级别/状态代码给出。