Index: dll/win32/msgina/CMakeLists.txt =================================================================== --- dll/win32/msgina/CMakeLists.txt (revision 63788) +++ dll/win32/msgina/CMakeLists.txt (working copy) @@ -9,6 +9,7 @@ gui.c lsa.c msgina.c + shutdown.c stubs.c tui.c msgina.h) @@ -21,7 +22,7 @@ set_module_type(msgina win32dll) target_link_libraries(msgina wine) -add_importlibs(msgina advapi32 user32 gdi32 userenv msvcrt kernel32 ntdll) +add_importlibs(msgina advapi32 user32 gdi32 powrprof userenv msvcrt kernel32 ntdll) add_delay_importlibs(msgina secur32) add_pch(msgina msgina.h SOURCE) add_cd_file(TARGET msgina DESTINATION reactos/system32 FOR all) Index: dll/win32/msgina/lang/bg-BG.rc =================================================================== --- dll/win32/msgina/lang/bg-BG.rc (revision 63788) +++ dll/win32/msgina/lang/bg-BG.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Изключване на РеактОС" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Какво искате да направи компютъра?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "Добре", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Отказ", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "Помо&щ", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Здравейте!" Index: dll/win32/msgina/lang/cs-CZ.rc =================================================================== --- dll/win32/msgina/lang/cs-CZ.rc (revision 63788) +++ dll/win32/msgina/lang/cs-CZ.rc (working copy) @@ -142,6 +142,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Vypnout ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&What do you want the computer to do?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Storno", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Nápověda", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Vítejte!" Index: dll/win32/msgina/lang/de-DE.rc =================================================================== --- dll/win32/msgina/lang/de-DE.rc (revision 63788) +++ dll/win32/msgina/lang/de-DE.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "ReactOS herunterfahren" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Welcher Vorgang soll durchgeführt werden?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Abbrechen", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Hilfe", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Willkommen!" Index: dll/win32/msgina/lang/en-US.rc =================================================================== --- dll/win32/msgina/lang/en-US.rc (revision 63788) +++ dll/win32/msgina/lang/en-US.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Shut Down ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&What do you want the computer to do?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Help", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Welcome!" Index: dll/win32/msgina/lang/es-ES.rc =================================================================== --- dll/win32/msgina/lang/es-ES.rc (revision 63788) +++ dll/win32/msgina/lang/es-ES.rc (working copy) @@ -139,6 +139,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Apagar ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "¿&Que quieres que haga el equipo?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "Aceptar", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Cancelar", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Ayuda", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "¡Bienvenido!" Index: dll/win32/msgina/lang/fr-FR.rc =================================================================== --- dll/win32/msgina/lang/fr-FR.rc (revision 63788) +++ dll/win32/msgina/lang/fr-FR.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Fermer ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Que voulez-vous que l'ordinateur fasse ?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Annuler", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Aide", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Bienvenue!" Index: dll/win32/msgina/lang/he-IL.rc =================================================================== --- dll/win32/msgina/lang/he-IL.rc (revision 63788) +++ dll/win32/msgina/lang/he-IL.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Shut Down ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&What do you want the computer to do?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Help", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "ברוכים הבאים!" Index: dll/win32/msgina/lang/id-ID.rc =================================================================== --- dll/win32/msgina/lang/id-ID.rc (revision 63788) +++ dll/win32/msgina/lang/id-ID.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Shut Down ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&What do you want the computer to do?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Help", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Selamat datang!" Index: dll/win32/msgina/lang/it-IT.rc =================================================================== --- dll/win32/msgina/lang/it-IT.rc (revision 63788) +++ dll/win32/msgina/lang/it-IT.rc (working copy) @@ -146,6 +146,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Spegnimento di ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Cosa volete che faccia ReactOS?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Annulla", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Aiuto", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Benvenuti!" Index: dll/win32/msgina/lang/ja-JP.rc =================================================================== --- dll/win32/msgina/lang/ja-JP.rc (revision 63788) +++ dll/win32/msgina/lang/ja-JP.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "ReactOSのシャットダウン" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&コンピュータの動作を選択してください", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "キャンセル", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "ヘルプ(&H)", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "ようこそ!" Index: dll/win32/msgina/lang/no-NO.rc =================================================================== --- dll/win32/msgina/lang/no-NO.rc (revision 63788) +++ dll/win32/msgina/lang/no-NO.rc (working copy) @@ -137,6 +137,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Slå av ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Hva vil du at datamaskinen skal gjøre?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Avbryt", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Hjelp", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Velkommen!" Index: dll/win32/msgina/lang/pl-PL.rc =================================================================== --- dll/win32/msgina/lang/pl-PL.rc (revision 63788) +++ dll/win32/msgina/lang/pl-PL.rc (working copy) @@ -147,6 +147,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Zamknij ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Co chcesz, aby zrobił komputer?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Anuluj", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Pomoc", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Witaj!" Index: dll/win32/msgina/lang/ro-RO.rc =================================================================== --- dll/win32/msgina/lang/ro-RO.rc (revision 63788) +++ dll/win32/msgina/lang/ro-RO.rc (working copy) @@ -146,6 +146,21 @@ DEFPUSHBUTTON "Î&nchide", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Închidere ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Ce doriți să se întâmple?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "Con&firmă", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "A&nulează", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Manual…", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Bun venit!" Index: dll/win32/msgina/lang/ru-RU.rc =================================================================== --- dll/win32/msgina/lang/ru-RU.rc (revision 63788) +++ dll/win32/msgina/lang/ru-RU.rc (working copy) @@ -139,6 +139,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Завершение работы ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Выберите желаемое действие.", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Отмена", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Справка", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Добро пожаловать!" Index: dll/win32/msgina/lang/sk-SK.rc =================================================================== --- dll/win32/msgina/lang/sk-SK.rc (revision 63788) +++ dll/win32/msgina/lang/sk-SK.rc (working copy) @@ -142,6 +142,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Vypnutie systému ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Čo chcete aby počítač urobil?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Zrušiť", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Pomocník", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Vitajte!" Index: dll/win32/msgina/lang/sq-AL.rc =================================================================== --- dll/win32/msgina/lang/sq-AL.rc (revision 63788) +++ dll/win32/msgina/lang/sq-AL.rc (working copy) @@ -128,7 +128,7 @@ COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 DEFPUSHBUTTON "OK", IDOK, 143, 122, 55, 14, WS_GROUP - PUSHBUTTON "Cancel", IDCANCEL, 204, 122, 55, 14 + PUSHBUTTON "Anulo", IDCANCEL, 204, 122, 55, 14 END IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 @@ -140,6 +140,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Shut Down ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&What do you want the computer to do?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Anulo", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Ndihmë", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Mirëseerdhët!" Index: dll/win32/msgina/lang/tr-TR.rc =================================================================== --- dll/win32/msgina/lang/tr-TR.rc (revision 63788) +++ dll/win32/msgina/lang/tr-TR.rc (working copy) @@ -139,6 +139,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Oturumu Kapat" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Bilgisayarınızın ne yapmasını istiyorsunuz?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "Tamam", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "İptal", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Yardım", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Hoşgeldiniz!" Index: dll/win32/msgina/lang/uk-UA.rc =================================================================== --- dll/win32/msgina/lang/uk-UA.rc (revision 63788) +++ dll/win32/msgina/lang/uk-UA.rc (working copy) @@ -145,6 +145,21 @@ DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14 END +IDD_SHUTDOWN_SHELL DIALOGEX 0, 0, 275, 146 +STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Завершення роботи ReactOS" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHELL_SHUTDOWN, IDI_SHELL_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Виберіть одну з таких можливостей?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27 + DEFPUSHBUTTON "OK", IDOK, 80, 122, 55, 14, WS_GROUP + PUSHBUTTON "Скасувати", IDCANCEL, 143, 122, 55, 14 + PUSHBUTTON "&Довідка", IDHELP, 204, 122, 55, 14 +END + STRINGTABLE BEGIN IDS_LOGGEDOUTSAS "Ласкаво просимо!" Index: dll/win32/msgina/resource.h =================================================================== --- dll/win32/msgina/resource.h (revision 63788) +++ dll/win32/msgina/resource.h (working copy) @@ -8,6 +8,7 @@ #define IDD_LOCKED_DLG 104 #define IDD_UNLOCK_DLG 105 #define IDD_SHUTDOWN_DLG 108 +#define IDD_SHUTDOWN_SHELL 109 #define IDC_LOGOFF 1001 #define IDC_USERNAME 1002 Index: dll/win32/msgina/shutdown.c =================================================================== --- dll/win32/msgina/shutdown.c (revision 0) +++ dll/win32/msgina/shutdown.c (working copy) @@ -0,0 +1,271 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS msgina.dll + * FILE: lib/msgina/shutdown.c + * PURPOSE: Shutdown Dialog Box + * PROGRAMMER: Lee Schroeder (spaceseel at gmail dot com) + * UPDATE HISTORY: + * 24-11-2003 Created + */ + +#include "msgina.h" +#include +#include +#include + +int g_shutdownCode = 0; +BOOL g_logoffHideState = FALSE; + +VOID UpdateShutdownShellDesc(HWND hwnd) +{ + WCHAR tmpBuffer[256]; + UINT shutdownDescId = 0; + HWND shutdownHwnd = GetDlgItem(hwnd, IDC_SHUTDOWN_DESCRIPTION); + int shutdownCode = 0; + + shutdownCode = SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_GETCURSEL, 0, 0); + + if(!g_logoffHideState) + { + switch (shutdownCode) + { + case 0: /* Log off */ + shutdownDescId = IDS_SHUTDOWN_LOGOFF_DESC; + break; + case 1: /* Shut down */ + shutdownDescId = IDS_SHUTDOWN_SHUTDOWN_DESC; + break; + case 2: /* Restart */ + shutdownDescId = IDS_SHUTDOWN_RESTART_DESC; + break; + default: + break; + } + + if (IsPwrSuspendAllowed()) + { + if (shutdownCode == 3) /* Sleep */ + { + shutdownDescId = IDS_SHUTDOWN_SLEEP_DESC; + } + else if (shutdownCode == 4) /* Hibernate */ + { + shutdownDescId = IDS_SHUTDOWN_HIBERNATE_DESC; + } + } + else + { + if (shutdownCode == 3) /* Hibernate */ + { + shutdownDescId = IDS_SHUTDOWN_SLEEP_DESC; + } + } + } + else + { + switch (shutdownCode) + { + case 0: /* Shut down */ + shutdownDescId = IDS_SHUTDOWN_SHUTDOWN_DESC; + break; + case 1: /* Restart */ + shutdownDescId = IDS_SHUTDOWN_RESTART_DESC; + break; + default: + break; + } + + if (IsPwrSuspendAllowed()) + { + if (shutdownCode == 2) /* Sleep */ + { + shutdownDescId = IDS_SHUTDOWN_SLEEP_DESC; + } + else if (shutdownCode == 3) /* Hibernate */ + { + shutdownDescId = IDS_SHUTDOWN_HIBERNATE_DESC; + } + } + else + { + if (shutdownCode == 2) /* Hibernate */ + { + shutdownDescId = IDS_SHUTDOWN_SLEEP_DESC; + } + } + } + + LoadStringW(hDllInstance, shutdownDescId, tmpBuffer, sizeof(tmpBuffer)); + SetWindowTextW(shutdownHwnd, tmpBuffer); +} + +BOOL CALLBACK ExitWindowsDialogShellProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) +{ + PGINA_CONTEXT pgContext; + + pgContext = (PGINA_CONTEXT)GetWindowLongPtr(hwnd, GWL_USERDATA); + + switch (Message) + { + case WM_INITDIALOG: + { + int defSelect = 0; + DWORD userBufferSize = 256; + WCHAR userBuffer[userBufferSize]; + WCHAR tmpBuffer[256]; + WCHAR tmpBuffer2[512]; + + pgContext = (PGINA_CONTEXT)lParam; + SetWindowLongPtr(hwnd, GWL_USERDATA, (DWORD_PTR)pgContext); + + /* Clears the content before it's used */ + SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_RESETCONTENT, 0, 0); + + if(!g_logoffHideState) + { + /* Log off */ + LoadStringW(hDllInstance, IDS_SHUTDOWN_LOGOFF, tmpBuffer, sizeof(tmpBuffer)/sizeof(WCHAR)); + GetUserNameW(userBuffer, &userBufferSize); + StringCchPrintfW(tmpBuffer2, 512, tmpBuffer, userBuffer); + SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_ADDSTRING, 0, (LPARAM)tmpBuffer2); + } + + /* Shut down - DEFAULT */ + LoadStringW(hDllInstance, IDS_SHUTDOWN_SHUTDOWN, tmpBuffer, sizeof(tmpBuffer)/sizeof(WCHAR)); + defSelect = SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_ADDSTRING, 0, (LPARAM)tmpBuffer); + + /* Restart */ + LoadStringW(hDllInstance, IDS_SHUTDOWN_RESTART, tmpBuffer, sizeof(tmpBuffer)/sizeof(WCHAR)); + SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_ADDSTRING, 0, (LPARAM)tmpBuffer); + + /* Sleep */ + if (IsPwrSuspendAllowed()) + { + LoadStringW(hDllInstance, IDS_SHUTDOWN_SLEEP, tmpBuffer, sizeof(tmpBuffer)/sizeof(WCHAR)); + SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_ADDSTRING, 0, (LPARAM)tmpBuffer); + } + + /* Hibernate */ + if (IsPwrHibernateAllowed()) + { + LoadStringW(hDllInstance, IDS_SHUTDOWN_HIBERNATE, tmpBuffer, sizeof(tmpBuffer)/sizeof(WCHAR)); + SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_ADDSTRING, 0, (LPARAM)tmpBuffer); + } + + /* Sets the default shut down selection */ + SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_SETCURSEL, defSelect, 0); + + /* Updates the choice description based on the current selection */ + UpdateShutdownShellDesc(hwnd); + + /* Draw the logo graphic */ + pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); + + return TRUE; + } + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc; + if (pgContext->hBitmap) + { + hdc = BeginPaint(hwnd, &ps); + DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); + EndPaint(hwnd, &ps); + } + return TRUE; + } + case WM_DESTROY: + { + DeleteObject(pgContext->hBitmap); + return TRUE; + } + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDOK: + g_shutdownCode = SendDlgItemMessageW(hwnd, IDC_SHUTDOWN_LIST, CB_GETCURSEL, (WPARAM)0, (LPARAM)0); + EndDialog(hwnd, IDOK); + break; + case IDCANCEL: + EndDialog(hwnd, IDCANCEL); + break; + case IDHELP: + EndDialog(hwnd, IDHELP); + break; + case IDC_SHUTDOWN_LIST: + UpdateShutdownShellDesc(hwnd); + break; + } + break; + default: + return FALSE; + } + return TRUE; +} + +/* + * NOTES: + * - Based upon observations on the ShellShutdownDialog() function, the function doesn't actually + * do anything except show a dialog box and returning a value based upon the value chosen. That + * means that any code that calls the function has to execute the chosen action (shut down, + * restart, etc.). + * - When this function is called in Windows XP, it shows the classic dialog box regardless if + * SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\LogonType is enabled or not. + * - When the Help button is pushed, it sends the same return value as IDCANCEL (0x00), but + * at the same time, it calls the help file directly from the dialog box. + * - When the dialog is created, it doesn't disable all other input from the other windows. + * This is done elsewhere. When running the function ShellShutdownDialog() from XP/2K3, if the user clicks + * out of the window, it automatically closes itself. + * - The parameter, lpUsername never seems to be used when calling the function from Windows XP. Either + * it was a parameter that was never used in the final version before release, or it has a use that + * is currently not known. + */ +DWORD WINAPI +ShellShutdownDialog( + HWND hParent, + LPWSTR lpUsername, + BOOL bHideLogoff) +{ + int dlgValue = 0; + + g_logoffHideState = bHideLogoff; + + UNREFERENCED_PARAMETER(lpUsername); + + // Loads the shut down dialog box + dlgValue = DialogBox(hDllInstance, + MAKEINTRESOURCE(IDD_SHUTDOWN_SHELL), + hParent, + ExitWindowsDialogShellProc); + + // Determines what to do based on user selection + if (dlgValue == IDOK) + { + switch (g_shutdownCode) + { + case 0: /* Log off */ + return 0x01; + case 1: /* Shut down */ + return 0x02; + case 2: /* Reboot */ + return 0x04; + case 3: /* Sleep */ + return 0x10; + case 4: /* Hibernate */ + return 0x40; + } + } + /* Help file is called directly here */ + else if (dlgValue == IDHELP) + { + FIXME("Help is not implemented yet."); + MessageBoxW(hParent, L"Help is not implemented yet.", L"Message", MB_OK | MB_ICONEXCLAMATION); + } + else if (dlgValue == -1) + { + ERR("Failed to create dialog\n"); + } + + return 0x00; +} Index: dll/win32/msgina/stubs.c =================================================================== --- dll/win32/msgina/stubs.c (revision 63788) +++ dll/win32/msgina/stubs.c (working copy) @@ -14,32 +14,6 @@ /* * @unimplemented */ -DWORD WINAPI -ShellShutdownDialog( - HWND hParent, - LPWSTR lpUsername, - BOOL bHideLogoff) -{ - UNREFERENCED_PARAMETER(hParent); - UNREFERENCED_PARAMETER(lpUsername); - UNREFERENCED_PARAMETER(bHideLogoff); - - /* Return values: - * 0x00: Cancelled/Help - * 0x01: Log off user - * 0x02: Shutdown - * 0x04: Reboot - * 0x10: Standby - * 0x40: Hibernate - */ - UNIMPLEMENTED; - return FALSE; -} - - -/* - * @unimplemented - */ BOOL WINAPI WlxIsLockOk( PVOID pWlxContext) Index: dll/win32/shell32/CMakeLists.txt =================================================================== --- dll/win32/shell32/CMakeLists.txt (revision 63788) +++ dll/win32/shell32/CMakeLists.txt (working copy) @@ -97,6 +97,7 @@ browseui gdi32 user32 + powrprof comctl32 comdlg32 shdocvw Index: dll/win32/shell32/dialogs.cpp =================================================================== --- dll/win32/shell32/dialogs.cpp (revision 63788) +++ dll/win32/shell32/dialogs.cpp (working copy) @@ -116,6 +116,7 @@ pIconContext = (PPICK_ICON_CONTEXT)lParam; SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)pIconContext); pIconContext->hDlgCtrl = GetDlgItem(hwndDlg, IDC_PICKICON_LIST); + SendMessageW(pIconContext->hDlgCtrl, LB_SETCOLUMNWIDTH, 32, 0); EnumResourceNamesW(pIconContext->hLibrary, RT_ICON, EnumPickIconResourceProc, (LPARAM)pIconContext); if (PathUnExpandEnvStringsW(pIconContext->szName, szText, MAX_PATH)) SetDlgItemTextW(hwndDlg, IDC_EDIT_PATH, szText); @@ -695,31 +696,130 @@ return RestartDialogEx(hWndOwner, lpstrReason, uFlags, 0); } + /************************************************************************* + * Used to get the shutdown privilege + */ +VOID ExitWindows_GetShutdownPrivilege(VOID) +{ + HANDLE hToken; + TOKEN_PRIVILEGES npr; + /* enable shut down privilege for current process */ + if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) + { + LookupPrivilegeValueA(0, "SeShutdownPrivilege", &npr.Privileges[0].Luid); + + npr.PrivilegeCount = 1; + npr.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + AdjustTokenPrivileges(hToken, FALSE, &npr, 0, 0, 0); + + CloseHandle(hToken); + } +} + /************************************************************************* + * ExitWindowsDialog_backup + * + * NOTES + * used as a backup solution to shutdown the OS in case msgina.dll somehow + * cannot be found. + */ +VOID ExitWindowsDialog_backup(HWND hWndOwner) +{ + TRACE("(%p)\n", hWndOwner); + + if (ConfirmDialog(hWndOwner, IDS_SHUTDOWN_PROMPT, IDS_SHUTDOWN_TITLE)) + { + ExitWindows_GetShutdownPrivilege(); + ExitWindowsEx(EWX_SHUTDOWN, 0); + } +} + +/************************************************************************* * ExitWindowsDialog [SHELL32.60] * * NOTES * exported by ordinal */ +/* + * TODO: + * - Implement the ability to show either the Welcome Screen or the classic dialog boxes based upon the + * registry value: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\LogonType. + */ void WINAPI ExitWindowsDialog(HWND hWndOwner) { + typedef DWORD (WINAPI *ShellShFunc)(HWND hParent, WCHAR *Username, BOOL bHideLogoff); + HINSTANCE msginaDll = LoadLibraryA("msgina.dll"); + TRACE("(%p)\n", hWndOwner); - if (ConfirmDialog(hWndOwner, IDS_SHUTDOWN_PROMPT, IDS_SHUTDOWN_TITLE)) + /* If the DLL cannot be found for any reason, then it simply uses a + dialog box to ask if the user wants to shut down the computer. */ + if(!msginaDll) { - HANDLE hToken; - TOKEN_PRIVILEGES npr; + TRACE("Unable to load msgina.dll.\n"); + ExitWindowsDialog_backup(hWndOwner); + return; + } - /* enable shutdown privilege for current process */ - if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) + ShellShFunc pShellShutdownDialog = (ShellShFunc) GetProcAddress(msginaDll, "ShellShutdownDialog"); + + if(pShellShutdownDialog) + { + /* Actually call the function */ + DWORD returnValue = pShellShutdownDialog(hWndOwner, NULL, FALSE); + + switch(returnValue) { - LookupPrivilegeValueA(0, "SeShutdownPrivilege", &npr.Privileges[0].Luid); - npr.PrivilegeCount = 1; - npr.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - AdjustTokenPrivileges(hToken, FALSE, &npr, 0, 0, 0); - CloseHandle(hToken); + case 0x01: /* Log off user */ + { + ExitWindowsEx(EWX_LOGOFF, 0); + break; } - ExitWindowsEx(EWX_SHUTDOWN, 0); + case 0x02: /* Shut down */ + { + ExitWindows_GetShutdownPrivilege(); + ExitWindowsEx(EWX_SHUTDOWN, 0); + break; + } + case 0x03: /* Install Updates/Shutdown (?) */ + { + break; + } + case 0x04: /* Reboot */ + { + ExitWindows_GetShutdownPrivilege(); + ExitWindowsEx(EWX_REBOOT, 0); + break; + } + case 0x10: /* Sleep */ + { + if(IsPwrSuspendAllowed()) + { + ExitWindows_GetShutdownPrivilege(); + SetSuspendState(FALSE, FALSE, FALSE); + } + break; + } + case 0x40: /* Hibernate */ + { + if(IsPwrHibernateAllowed()) + { + ExitWindows_GetShutdownPrivilege(); + SetSuspendState(TRUE, FALSE, TRUE); + } + break; + } + /* If the option is any other value */ + default: + break; + } } + else + { + /* If the function cannot be found, then revert to using the backup solution */ + TRACE("Unable to find the 'ShellShutdownDialog' function"); + FreeLibrary(msginaDll); + ExitWindowsDialog_backup(hWndOwner); + } } Index: dll/win32/shell32/precomp.h =================================================================== --- dll/win32/shell32/precomp.h (revision 63788) +++ dll/win32/shell32/precomp.h (working copy) @@ -29,6 +29,7 @@ #include #include #include +#include //#include "base/shell/explorer-new/todo.h" //#include "dlgs.h"