[SHELL32]
 * Implement shell shutdown using a proper shutdown dialog. Patch by Lee Schroeder with a small change to fix MSVC build.
CORE-7559 #comment Commited into shell-experiments branch r64403. 

svn path=/branches/shell-experiments/; revision=64403
This commit is contained in:
David Quintana 2014-09-29 20:14:21 +00:00
parent 6aaa167a00
commit 257a0de098
24 changed files with 387 additions and 39 deletions

View file

@ -9,6 +9,7 @@ list(APPEND SOURCE
gui.c
lsa.c
msgina.c
shutdown.c
stubs.c
tui.c
msgina.h)
@ -21,7 +22,7 @@ add_library(msgina SHARED
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)

View file

@ -137,6 +137,21 @@ BEGIN
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 "Здравейте!"

View file

@ -142,6 +142,21 @@ BEGIN
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!"

View file

@ -137,6 +137,21 @@ BEGIN
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!"

View file

@ -137,6 +137,21 @@ BEGIN
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!"

View file

@ -139,6 +139,21 @@ BEGIN
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!"

View file

@ -137,6 +137,21 @@ BEGIN
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!"

View file

@ -137,6 +137,21 @@ BEGIN
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 "ברוכים הבאים!"

View file

@ -137,6 +137,21 @@ BEGIN
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!"

View file

@ -146,6 +146,21 @@ BEGIN
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!"

View file

@ -137,6 +137,21 @@ BEGIN
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 "ようこそ!"

View file

@ -137,6 +137,21 @@ BEGIN
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!"

View file

@ -147,6 +147,21 @@ BEGIN
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!"

View file

@ -146,6 +146,21 @@ BEGIN
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!"

View file

@ -139,6 +139,21 @@ BEGIN
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 "Добро пожаловать!"

View file

@ -142,6 +142,21 @@ BEGIN
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!"

View file

@ -128,7 +128,7 @@ BEGIN
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 @@ BEGIN
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!"

View file

@ -139,6 +139,21 @@ BEGIN
DEFPUSHBUTTON "Tamam", 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!"

View file

@ -145,6 +145,21 @@ BEGIN
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 "Ласкаво просимо!"

View file

@ -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

View file

@ -11,32 +11,6 @@
#include "msgina.h"
/*
* @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
*/

View file

@ -98,6 +98,7 @@ add_importlibs(shell32
browseui
gdi32
user32
powrprof
comctl32
comdlg32
shdocvw

View file

@ -116,6 +116,7 @@ INT_PTR CALLBACK PickIconProc(HWND hwndDlg,
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,6 +696,44 @@ int WINAPI RestartDialog(HWND hWndOwner, LPCWSTR lpstrReason, DWORD uFlags)
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]
@ -702,24 +741,85 @@ int WINAPI RestartDialog(HWND hWndOwner, LPCWSTR lpstrReason, DWORD uFlags)
* 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);
}
}

View file

@ -29,6 +29,7 @@
#include <strsafe.h>
#include <atlbase.h>
#include <atlcom.h>
#include <powrprof.h>
//#include "base/shell/explorer-new/todo.h"
//#include "dlgs.h"