我有一个应用程序,我想在Windows关闭(或用户注销)时正常关闭.这曾经工作(在xp中),但在去年的某个时候它没有任何人注意到.它在Windows 7下也破坏了(但不同).
我们的产品有一个主进程(server.exe),可启动许多其他进程.正常关闭会让server.exe询问它开始关闭的所有进程.但是,当我调试此代码时,似乎其他进程已经终止.我们的主进程(server.exe)是处理WM_QUERYENDSESSION和WM_ENDSESSION消息的唯一进程.下面的代码(这曾经在XP下工作但不再有):
LRESULT CALLBACK master_wnd_proc
(
HWND hwnd, /* (in) handle to window */
UINT uMsg, /* (in) message identifier */
WPARAM wParam, /* (in) first message parameter */
LPARAM lParam /* (in) second message parameter */
)
{
LRESULT result; /* return value */
long msg_code;
switch (uMsg)
{
case WM_ENDSESSION:
if (wParam)
{
msg_code = PCS_WINDOWS_SHUTDOWN;
if( lParam & 0x01L )
msg_code = WINDOWS_SHUT_CLOSE;
if( lParam & 0x40000000L )
msg_code = WINDOWS_SHUT_CRIT;
if( (unsigned long)lParam & 0x80000000 …Run Code Online (Sandbox Code Playgroud)