- If given the EWX_FORCE flag, ExitWindowsEx() should not send the

WM_{QUERY}ENDSESSION messages.
- Add support for EWX_FORCEIFHUNG.
- ExitWindowsEx() should return true if it succeeds, even if the user
  cancels the shutdown.
- Don't crash if there are no windows.
This commit is contained in:
Francois Gouget 2005-01-03 16:57:02 +00:00 committed by Alexandre Julliard
parent d06a464ce9
commit 20afe30d76
1 changed files with 23 additions and 17 deletions

View File

@ -409,13 +409,15 @@ static BOOL USER_StartRebootProcess(void)
BOOL WINAPI ExitWindowsEx( UINT flags, DWORD reserved )
{
int i;
BOOL result;
BOOL result = FALSE;
HWND *list, *phwnd;
/* We have to build a list of all windows first, as in EnumWindows */
TRACE("(%x,%lx)\n", flags, reserved);
if (!(list = WIN_ListChildren( GetDesktopWindow() ))) return FALSE;
list = WIN_ListChildren( GetDesktopWindow() );
if (list)
{
/* Send a WM_QUERYENDSESSION message to every window */
for (i = 0; list[i]; i++)
@ -435,6 +437,10 @@ BOOL WINAPI ExitWindowsEx( UINT flags, DWORD reserved )
}
HeapFree( GetProcessHeap(), 0, list );
if ( !(result || (flags & EWX_FORCE) ))
return FALSE;
}
/* USER_DoShutdown will kill all processes except the current process */
USER_DoShutdown();