mirror of
https://github.com/reactos/reactos.git
synced 2025-04-21 20:50:29 +00:00
[MSGINA]
[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:
parent
6aaa167a00
commit
257a0de098
24 changed files with 387 additions and 39 deletions
|
@ -9,6 +9,7 @@ list(APPEND SOURCE
|
||||||
gui.c
|
gui.c
|
||||||
lsa.c
|
lsa.c
|
||||||
msgina.c
|
msgina.c
|
||||||
|
shutdown.c
|
||||||
stubs.c
|
stubs.c
|
||||||
tui.c
|
tui.c
|
||||||
msgina.h)
|
msgina.h)
|
||||||
|
@ -21,7 +22,7 @@ add_library(msgina SHARED
|
||||||
|
|
||||||
set_module_type(msgina win32dll)
|
set_module_type(msgina win32dll)
|
||||||
target_link_libraries(msgina wine)
|
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_delay_importlibs(msgina secur32)
|
||||||
add_pch(msgina msgina.h SOURCE)
|
add_pch(msgina msgina.h SOURCE)
|
||||||
add_cd_file(TARGET msgina DESTINATION reactos/system32 FOR all)
|
add_cd_file(TARGET msgina DESTINATION reactos/system32 FOR all)
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Здравейте!"
|
IDS_LOGGEDOUTSAS "Здравейте!"
|
||||||
|
|
|
@ -142,6 +142,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Vítejte!"
|
IDS_LOGGEDOUTSAS "Vítejte!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Willkommen!"
|
IDS_LOGGEDOUTSAS "Willkommen!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Welcome!"
|
IDS_LOGGEDOUTSAS "Welcome!"
|
||||||
|
|
|
@ -139,6 +139,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "¡Bienvenido!"
|
IDS_LOGGEDOUTSAS "¡Bienvenido!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Bienvenue!"
|
IDS_LOGGEDOUTSAS "Bienvenue!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "ברוכים הבאים!"
|
IDS_LOGGEDOUTSAS "ברוכים הבאים!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Selamat datang!"
|
IDS_LOGGEDOUTSAS "Selamat datang!"
|
||||||
|
|
|
@ -146,6 +146,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Benvenuti!"
|
IDS_LOGGEDOUTSAS "Benvenuti!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "ようこそ!"
|
IDS_LOGGEDOUTSAS "ようこそ!"
|
||||||
|
|
|
@ -137,6 +137,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Velkommen!"
|
IDS_LOGGEDOUTSAS "Velkommen!"
|
||||||
|
|
|
@ -147,6 +147,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Witaj!"
|
IDS_LOGGEDOUTSAS "Witaj!"
|
||||||
|
|
|
@ -146,6 +146,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "Î&nchide", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "Î&nchide", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Bun venit!"
|
IDS_LOGGEDOUTSAS "Bun venit!"
|
||||||
|
|
|
@ -139,6 +139,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Добро пожаловать!"
|
IDS_LOGGEDOUTSAS "Добро пожаловать!"
|
||||||
|
|
|
@ -142,6 +142,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Vitajte!"
|
IDS_LOGGEDOUTSAS "Vitajte!"
|
||||||
|
|
|
@ -128,7 +128,7 @@ BEGIN
|
||||||
COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL
|
COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 165, 210, CBS_DROPDOWNLIST | WS_VSCROLL
|
||||||
LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27
|
LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 187, 27
|
||||||
DEFPUSHBUTTON "OK", IDOK, 143, 122, 55, 14, WS_GROUP
|
DEFPUSHBUTTON "OK", IDOK, 143, 122, 55, 14, WS_GROUP
|
||||||
PUSHBUTTON "Cancel", IDCANCEL, 204, 122, 55, 14
|
PUSHBUTTON "Anulo", IDCANCEL, 204, 122, 55, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200
|
IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200
|
||||||
|
@ -140,6 +140,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Mirëseerdhët!"
|
IDS_LOGGEDOUTSAS "Mirëseerdhët!"
|
||||||
|
|
|
@ -139,6 +139,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "Tamam", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "Tamam", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Hoşgeldiniz!"
|
IDS_LOGGEDOUTSAS "Hoşgeldiniz!"
|
||||||
|
|
|
@ -145,6 +145,21 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
DEFPUSHBUTTON "OK", IDOK, 115, 179, 50, 14
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_LOGGEDOUTSAS "Ласкаво просимо!"
|
IDS_LOGGEDOUTSAS "Ласкаво просимо!"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#define IDD_LOCKED_DLG 104
|
#define IDD_LOCKED_DLG 104
|
||||||
#define IDD_UNLOCK_DLG 105
|
#define IDD_UNLOCK_DLG 105
|
||||||
#define IDD_SHUTDOWN_DLG 108
|
#define IDD_SHUTDOWN_DLG 108
|
||||||
|
#define IDD_SHUTDOWN_SHELL 109
|
||||||
|
|
||||||
#define IDC_LOGOFF 1001
|
#define IDC_LOGOFF 1001
|
||||||
#define IDC_USERNAME 1002
|
#define IDC_USERNAME 1002
|
||||||
|
|
|
@ -11,32 +11,6 @@
|
||||||
|
|
||||||
#include "msgina.h"
|
#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
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -98,6 +98,7 @@ add_importlibs(shell32
|
||||||
browseui
|
browseui
|
||||||
gdi32
|
gdi32
|
||||||
user32
|
user32
|
||||||
|
powrprof
|
||||||
comctl32
|
comctl32
|
||||||
comdlg32
|
comdlg32
|
||||||
shdocvw
|
shdocvw
|
||||||
|
|
|
@ -116,6 +116,7 @@ INT_PTR CALLBACK PickIconProc(HWND hwndDlg,
|
||||||
pIconContext = (PPICK_ICON_CONTEXT)lParam;
|
pIconContext = (PPICK_ICON_CONTEXT)lParam;
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)pIconContext);
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)pIconContext);
|
||||||
pIconContext->hDlgCtrl = GetDlgItem(hwndDlg, IDC_PICKICON_LIST);
|
pIconContext->hDlgCtrl = GetDlgItem(hwndDlg, IDC_PICKICON_LIST);
|
||||||
|
SendMessageW(pIconContext->hDlgCtrl, LB_SETCOLUMNWIDTH, 32, 0);
|
||||||
EnumResourceNamesW(pIconContext->hLibrary, RT_ICON, EnumPickIconResourceProc, (LPARAM)pIconContext);
|
EnumResourceNamesW(pIconContext->hLibrary, RT_ICON, EnumPickIconResourceProc, (LPARAM)pIconContext);
|
||||||
if (PathUnExpandEnvStringsW(pIconContext->szName, szText, MAX_PATH))
|
if (PathUnExpandEnvStringsW(pIconContext->szName, szText, MAX_PATH))
|
||||||
SetDlgItemTextW(hwndDlg, IDC_EDIT_PATH, szText);
|
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);
|
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]
|
* ExitWindowsDialog [SHELL32.60]
|
||||||
|
@ -702,24 +741,85 @@ int WINAPI RestartDialog(HWND hWndOwner, LPCWSTR lpstrReason, DWORD uFlags)
|
||||||
* NOTES
|
* NOTES
|
||||||
* exported by ordinal
|
* 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)
|
void WINAPI ExitWindowsDialog(HWND hWndOwner)
|
||||||
{
|
{
|
||||||
|
typedef DWORD (WINAPI *ShellShFunc)(HWND hParent, WCHAR *Username, BOOL bHideLogoff);
|
||||||
|
HINSTANCE msginaDll = LoadLibraryA("msgina.dll");
|
||||||
|
|
||||||
TRACE("(%p)\n", hWndOwner);
|
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;
|
TRACE("Unable to load msgina.dll.\n");
|
||||||
TOKEN_PRIVILEGES npr;
|
ExitWindowsDialog_backup(hWndOwner);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* enable shutdown privilege for current process */
|
ShellShFunc pShellShutdownDialog = (ShellShFunc) GetProcAddress(msginaDll, "ShellShutdownDialog");
|
||||||
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
|
|
||||||
|
if(pShellShutdownDialog)
|
||||||
|
{
|
||||||
|
/* Actually call the function */
|
||||||
|
DWORD returnValue = pShellShutdownDialog(hWndOwner, NULL, FALSE);
|
||||||
|
|
||||||
|
switch(returnValue)
|
||||||
{
|
{
|
||||||
LookupPrivilegeValueA(0, "SeShutdownPrivilege", &npr.Privileges[0].Luid);
|
case 0x01: /* Log off user */
|
||||||
npr.PrivilegeCount = 1;
|
{
|
||||||
npr.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
|
ExitWindowsEx(EWX_LOGOFF, 0);
|
||||||
AdjustTokenPrivileges(hToken, FALSE, &npr, 0, 0, 0);
|
break;
|
||||||
CloseHandle(hToken);
|
|
||||||
}
|
}
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
#include <atlbase.h>
|
#include <atlbase.h>
|
||||||
#include <atlcom.h>
|
#include <atlcom.h>
|
||||||
|
#include <powrprof.h>
|
||||||
|
|
||||||
//#include "base/shell/explorer-new/todo.h"
|
//#include "base/shell/explorer-new/todo.h"
|
||||||
//#include "dlgs.h"
|
//#include "dlgs.h"
|
||||||
|
|
Loading…
Reference in a new issue