ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
April 2018
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
26 participants
247 discussions
Start a n
N
ew thread
01/01: [USERSRV] HardError: Fix compilation warning; fix few comments; fix the default empty window title string.
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=75e80632d1c1352eafee6…
commit 75e80632d1c1352eafee6226ab759fe72c992d78 Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Sun Apr 8 16:15:56 2018 +0200 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sun Apr 8 16:15:56 2018 +0200 [USERSRV] HardError: Fix compilation warning; fix few comments; fix the default empty window title string. --- win32ss/user/winsrv/usersrv/harderror.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/win32ss/user/winsrv/usersrv/harderror.c b/win32ss/user/winsrv/usersrv/harderror.c index 62864ca695..7cc3a67ca4 100644 --- a/win32ss/user/winsrv/usersrv/harderror.c +++ b/win32ss/user/winsrv/usersrv/harderror.c @@ -175,8 +175,8 @@ UserpCaptureStringParameters( } else { - /* Allocate a buffer for converted to ANSI string */ - TempStringA.MaximumLength = RtlUnicodeStringToAnsiSize(&TempStringU); + /* Allocate a buffer for conversion to ANSI string */ + TempStringA.MaximumLength = (USHORT)RtlUnicodeStringToAnsiSize(&TempStringU); TempStringA.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, TempStringA.MaximumLength); @@ -542,7 +542,7 @@ UserpFormatMessages( * Fall back to unknown hard error format string. * NOTE: The value used here is ReactOS-specific: it allows specifying * the exact hard error status value and the parameters, contrary to - * the one on Windows which only says: "Unknown Hard Error". + * the one on Windows that only says: "Unknown Hard Error". */ RtlInitEmptyUnicodeString(&FormatU, NULL, 0); FormatA.Buffer = NULL; @@ -585,7 +585,7 @@ UserpFormatMessages( } /* Retrieve the window title of the client, if it has one */ - RtlInitEmptyUnicodeString(&WindowTitleU, NULL, 0); + RtlInitEmptyUnicodeString(&WindowTitleU, L"", 0); hwndOwner = NULL; EnumThreadWindows(HandleToUlong(Message->h.ClientId.UniqueThread), FindTopLevelWnd, (LPARAM)&hwndOwner); @@ -595,22 +595,19 @@ UserpFormatMessages( if (cszBuffer != 0) { cszBuffer += 3; // 2 characters for ": " and a NULL terminator. - WindowTitleU.MaximumLength = (USHORT)(cszBuffer * sizeof(WCHAR)); - WindowTitleU.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), - HEAP_ZERO_MEMORY, - WindowTitleU.MaximumLength); - if (WindowTitleU.Buffer) + cszBuffer *= sizeof(WCHAR); + pszBuffer = RtlAllocateHeap(RtlGetProcessHeap(), + HEAP_ZERO_MEMORY, + cszBuffer); + if (pszBuffer) { + RtlInitEmptyUnicodeString(&WindowTitleU, pszBuffer, (USHORT)cszBuffer); cszBuffer = GetWindowTextW(hwndOwner, WindowTitleU.Buffer, WindowTitleU.MaximumLength / sizeof(WCHAR)); WindowTitleU.Length = (USHORT)(cszBuffer * sizeof(WCHAR)); RtlAppendUnicodeToString(&WindowTitleU, L": "); } - else - { - RtlInitEmptyUnicodeString(&WindowTitleU, NULL, 0); - } } } @@ -636,7 +633,7 @@ UserpFormatMessages( CaptionStringU->Length = 0; CaptionStringU->Buffer[0] = UNICODE_NULL; - /* Append the file name, the separator and the caption text */ + /* Build the caption */ RtlStringCbPrintfW(CaptionStringU->Buffer, CaptionStringU->MaximumLength, L"%wZ%wZ - %wZ",
6 years, 8 months
1
0
0
0
01/01: [ZIPFLDR] Typo fix
by Bișoc George
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=10e4517ff87d9bc596b37…
commit 10e4517ff87d9bc596b37cdce996783a97c50dee Author: Bișoc George <fraizeraust99(a)gmail.com> AuthorDate: Sun Apr 8 11:34:13 2018 +0200 Commit: Mark Jansen <mark.jansen(a)reactos.org> CommitDate: Sun Apr 8 12:08:06 2018 +0200 [ZIPFLDR] Typo fix --- dll/shellext/zipfldr/zipfldr.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dll/shellext/zipfldr/zipfldr.rc b/dll/shellext/zipfldr/zipfldr.rc index 0b577b5f3e..b9f93eecf7 100644 --- a/dll/shellext/zipfldr/zipfldr.rc +++ b/dll/shellext/zipfldr/zipfldr.rc @@ -24,7 +24,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Select a Destination" FONT 8, "MS Shell Dlg", 400, 0, 0x0 BEGIN - LTEXT "Select the destionation directory",IDC_STATIC,6,12,174,8 + LTEXT "Select the destination directory",IDC_STATIC,6,12,174,8 EDITTEXT IDC_DIRECTORY,6,24,222,12,ES_AUTOHSCROLL PUSHBUTTON "Browse...",IDC_BROWSE,174,42,54,14 PUSHBUTTON "Password",IDC_PASSWORD,174,66,54,14
6 years, 8 months
1
0
0
0
02/02: [EXPLORER] Implement the feature of cleanly shutting down the explorer shell when cancelling the shutdown-dialog while pressing the CTRL-ALT-SHIFT keys.
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c62bccdda030ad8845429…
commit c62bccdda030ad88454297af2f4611232435f609 Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Sun Apr 8 00:33:23 2018 +0200 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sun Apr 8 00:36:56 2018 +0200 [EXPLORER] Implement the feature of cleanly shutting down the explorer shell when cancelling the shutdown-dialog while pressing the CTRL-ALT-SHIFT keys. See the feature description in
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144064(v=vs.85).…
and the additional observations reported in CORE-14358 . --- base/shell/explorer/traywnd.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index 2bbe3c5d61..4095bc1046 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -327,7 +327,19 @@ public: LRESULT DoExitWindows() { + /* Display the ReactOS Shutdown Dialog */ ExitWindowsDialog(m_hWnd); + + /* + * If the user presses CTRL+ALT+SHIFT while exiting + * the shutdown dialog, exit the shell cleanly. + */ + if ((GetKeyState(VK_CONTROL) & 0x8000) && + (GetKeyState(VK_SHIFT) & 0x8000) && + (GetKeyState(VK_MENU) & 0x8000)) + { + PostMessage(WM_QUIT, 0, 0); + } return 0; }
6 years, 8 months
1
0
0
0
01/02: [EXPLORER] Remove trailing whitespace.
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=6093abdebb6bf4c1abf46…
commit 6093abdebb6bf4c1abf46acad4d3b01087fb4189 Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Sun Apr 8 00:32:11 2018 +0200 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sun Apr 8 00:36:51 2018 +0200 [EXPLORER] Remove trailing whitespace. --- base/shell/explorer/explorer.cpp | 4 ++-- base/shell/explorer/taskswnd.cpp | 2 +- base/shell/explorer/traywnd.cpp | 24 ++++++++++++------------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/base/shell/explorer/explorer.cpp b/base/shell/explorer/explorer.cpp index f6e7402423..a596da1db7 100644 --- a/base/shell/explorer/explorer.cpp +++ b/base/shell/explorer/explorer.cpp @@ -87,7 +87,7 @@ HideMinimizedWindows(IN BOOL bHide) #endif #if !WIN7_COMPAT_MODE -static INT +static INT StartWithCommandLine(IN HINSTANCE hInstance) { BOOL b = FALSE; @@ -109,7 +109,7 @@ StartWithCommandLine(IN HINSTANCE hInstance) } #endif -static INT +static INT StartWithDesktop(IN HINSTANCE hInstance) { InitializeAtlModule(hInstance, TRUE); diff --git a/base/shell/explorer/taskswnd.cpp b/base/shell/explorer/taskswnd.cpp index 60b047a7dc..fe8ec05ac6 100644 --- a/base/shell/explorer/taskswnd.cpp +++ b/base/shell/explorer/taskswnd.cpp @@ -125,7 +125,7 @@ public: if (m_bThreadRunning) { /* Try to unstuck Show */ - PostThreadMessage(m_ThreadId, WM_QUIT, 0, 0); + PostThreadMessage(m_ThreadId, WM_QUIT, 0, 0); DWORD ret = WaitForSingleObject(m_hThread, 3*1000); if (ret == WAIT_TIMEOUT) TerminateThread(m_hThread, 0); diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index 47da09b558..2bbe3c5d61 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -544,7 +544,7 @@ public: case IDHK_EXPLORE: //FIXME: We don't support this yet: //ShellExecuteW(0, L"explore", NULL, NULL, NULL, 1); - ShellExecuteW(0, NULL, L"explorer.exe", L"/e ,", NULL, 1); + ShellExecuteW(0, NULL, L"explorer.exe", L"/e ,", NULL, 1); break; case IDHK_FIND: SHFindFiles(NULL, NULL); @@ -1311,8 +1311,8 @@ ChangePos: FitToRebar(&m_TrayRects[m_Position]); /* Move the tray window */ - /* The handler of WM_WINDOWPOSCHANGING will override whatever size - *and position we use here with m_TrayRects */ + /* The handler of WM_WINDOWPOSCHANGING will override whatever size + * and position we use here with m_TrayRects */ SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOACTIVATE); ResizeWorkArea(); ApplyClipping(TRUE); @@ -2012,7 +2012,7 @@ ChangePos: if (!m_ContextMenu) return E_INVALIDARG; - return m_ContextMenu->GetCommandString(idCmd, uType, pwReserved, pszName, cchMax); + return m_ContextMenu->GetCommandString(idCmd, uType, pwReserved, pszName, cchMax); } @@ -2396,7 +2396,7 @@ ChangePos: LRESULT OnNcLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - /* This handler implements the trick that makes the start button to + /* This handler implements the trick that makes the start button to get pressed when the user clicked left or below the button */ POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)}; @@ -2705,14 +2705,14 @@ HandleTrayContextMenu: RECT rc; ::GetWindowRect(m_hWnd, &rc); - SIZE szWindow = { - rc.right - rc.left, + SIZE szWindow = { + rc.right - rc.left, rc.bottom - rc.top }; - SIZE szTarget = { - as->rcTarget.right - as->rcTarget.left, + SIZE szTarget = { + as->rcTarget.right - as->rcTarget.left, as->rcTarget.bottom - as->rcTarget.top }; - SIZE szActual = { - as->rcActual.right - as->rcActual.left, + SIZE szActual = { + as->rcActual.right - as->rcActual.left, as->rcActual.bottom - as->rcActual.top }; SIZE borders = { @@ -2976,7 +2976,7 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE + virtual HRESULT STDMETHODCALLTYPE QueryContextMenu(HMENU hPopup, UINT indexMenu, UINT idCmdFirst,
6 years, 8 months
1
0
0
0
01/01: [MSGINA] Add the shutdown reason dialog but keep it disabled by default
by Eric Kohl
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4453f72ef80d86f0c6e83…
commit 4453f72ef80d86f0c6e83d80210ab4911b268510 Author: Eric Kohl <eric.kohl(a)reactos.org> AuthorDate: Sat Apr 7 20:47:10 2018 +0200 Commit: Eric Kohl <eric.kohl(a)reactos.org> CommitDate: Sat Apr 7 22:26:46 2018 +0200 [MSGINA] Add the shutdown reason dialog but keep it disabled by default --- dll/win32/msgina/lang/bg-BG.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/cs-CZ.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/de-DE.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/en-US.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/es-ES.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/fr-FR.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/he-IL.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/id-ID.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/it-IT.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/ja-JP.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/no-NO.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/pl-PL.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/ro-RO.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/ru-RU.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/sk-SK.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/sq-AL.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/tr-TR.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/uk-UA.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/zh-CN.rc | 27 +++++++++++++++++ dll/win32/msgina/lang/zh-TW.rc | 27 +++++++++++++++++ dll/win32/msgina/resource.h | 5 ++++ dll/win32/msgina/shutdown.c | 68 ++++++++++++++++++++++++++++++++++++++++-- 22 files changed, 611 insertions(+), 2 deletions(-) diff --git a/dll/win32/msgina/lang/bg-BG.rc b/dll/win32/msgina/lang/bg-BG.rc index 3bac3b26f5..c01b2d09d2 100644 --- a/dll/win32/msgina/lang/bg-BG.rc +++ b/dll/win32/msgina/lang/bg-BG.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "Помо&щ", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Какво искате да направи компютъра?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "Добре", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Отказ", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "Добре", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Отказ", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "Помо&щ", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/cs-CZ.rc b/dll/win32/msgina/lang/cs-CZ.rc index 2eee9560ee..4890687273 100644 --- a/dll/win32/msgina/lang/cs-CZ.rc +++ b/dll/win32/msgina/lang/cs-CZ.rc @@ -137,6 +137,33 @@ BEGIN // PUSHBUTTON "&Nápověda", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Co má počítač provést?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Storno", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Storno", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Nápověda", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/de-DE.rc b/dll/win32/msgina/lang/de-DE.rc index 03b369d6bf..0e547ef8c5 100644 --- a/dll/win32/msgina/lang/de-DE.rc +++ b/dll/win32/msgina/lang/de-DE.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "&Hilfe", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Ereignisprotokollierung", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Wählen Sie die Option, die am besten beschreibt, warum der Computer heruntergefahren werden soll.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Geplant", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Kommentar:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Abbrechen", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Abbrechen", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Hilfe", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/en-US.rc b/dll/win32/msgina/lang/en-US.rc index 519612a5b9..249ecf2ba1 100644 --- a/dll/win32/msgina/lang/en-US.rc +++ b/dll/win32/msgina/lang/en-US.rc @@ -133,6 +133,33 @@ BEGIN // PUSHBUTTON "&Help", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Cancel", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Help", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/es-ES.rc b/dll/win32/msgina/lang/es-ES.rc index a52079424a..aad7d12372 100644 --- a/dll/win32/msgina/lang/es-ES.rc +++ b/dll/win32/msgina/lang/es-ES.rc @@ -133,6 +133,33 @@ BEGIN // PUSHBUTTON "&Ayuda", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "¿&Qué desea hacer con el equipo?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "Aceptar", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Cancelar", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "Aceptar", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Cancelar", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Ayuda", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/fr-FR.rc b/dll/win32/msgina/lang/fr-FR.rc index 8dd4fe6eef..4001427e03 100644 --- a/dll/win32/msgina/lang/fr-FR.rc +++ b/dll/win32/msgina/lang/fr-FR.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "&Aide", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Annuler", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Annuler", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Aide", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/he-IL.rc b/dll/win32/msgina/lang/he-IL.rc index 0b9fda10c9..fabb061d1f 100644 --- a/dll/win32/msgina/lang/he-IL.rc +++ b/dll/win32/msgina/lang/he-IL.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "&Help", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Cancel", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Help", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/id-ID.rc b/dll/win32/msgina/lang/id-ID.rc index 1736489b33..994e5ac515 100644 --- a/dll/win32/msgina/lang/id-ID.rc +++ b/dll/win32/msgina/lang/id-ID.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "&Help", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Cancel", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Cancel", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Help", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/it-IT.rc b/dll/win32/msgina/lang/it-IT.rc index 6068cdd450..d669ff5d20 100644 --- a/dll/win32/msgina/lang/it-IT.rc +++ b/dll/win32/msgina/lang/it-IT.rc @@ -141,6 +141,33 @@ BEGIN // PUSHBUTTON "&Aiuto", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Annulla", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Annulla", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Aiuto", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/ja-JP.rc b/dll/win32/msgina/lang/ja-JP.rc index 279f56c68d..ec343314a8 100644 --- a/dll/win32/msgina/lang/ja-JP.rc +++ b/dll/win32/msgina/lang/ja-JP.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "ヘルプ(&H)", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "ReactOSのシャットダウン" +FONT 9,"MS UI Gothic", 400, 0, 1 +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&コンピュータの動作を選択してください", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "キャンセル", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "キャンセル", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "ヘルプ(&H)", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/no-NO.rc b/dll/win32/msgina/lang/no-NO.rc index aa5abc3565..387400b678 100644 --- a/dll/win32/msgina/lang/no-NO.rc +++ b/dll/win32/msgina/lang/no-NO.rc @@ -132,6 +132,33 @@ BEGIN // PUSHBUTTON "&Hjelp", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Avbryt", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Avbryt", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Hjelp", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/pl-PL.rc b/dll/win32/msgina/lang/pl-PL.rc index a969f74c39..519ee034b7 100644 --- a/dll/win32/msgina/lang/pl-PL.rc +++ b/dll/win32/msgina/lang/pl-PL.rc @@ -142,6 +142,33 @@ BEGIN // PUSHBUTTON "&Pomoc", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Anuluj", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Anuluj", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Pomoc", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/ro-RO.rc b/dll/win32/msgina/lang/ro-RO.rc index 9306d54aa1..19b6e4bd2a 100644 --- a/dll/win32/msgina/lang/ro-RO.rc +++ b/dll/win32/msgina/lang/ro-RO.rc @@ -141,6 +141,33 @@ BEGIN // PUSHBUTTON "&Manual…", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "Con&firmă", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "A&nulează", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "Con&firmă", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "A&nulează", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Manual…", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/ru-RU.rc b/dll/win32/msgina/lang/ru-RU.rc index 74e4353cf5..672091e845 100644 --- a/dll/win32/msgina/lang/ru-RU.rc +++ b/dll/win32/msgina/lang/ru-RU.rc @@ -134,6 +134,33 @@ BEGIN // PUSHBUTTON "&Справка", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Выберите желаемое действие:", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Отмена", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Отмена", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Справка", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/sk-SK.rc b/dll/win32/msgina/lang/sk-SK.rc index f5b8c59954..2bcde2642e 100644 --- a/dll/win32/msgina/lang/sk-SK.rc +++ b/dll/win32/msgina/lang/sk-SK.rc @@ -137,6 +137,33 @@ BEGIN // PUSHBUTTON "&Pomocník", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Zrušiť", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Zrušiť", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Pomocník", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/sq-AL.rc b/dll/win32/msgina/lang/sq-AL.rc index 246f946e4c..246f31a847 100644 --- a/dll/win32/msgina/lang/sq-AL.rc +++ b/dll/win32/msgina/lang/sq-AL.rc @@ -136,6 +136,33 @@ BEGIN // PUSHBUTTON "&Ndihmë", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_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, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Anulo", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Anulo", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Ndihmë", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/tr-TR.rc b/dll/win32/msgina/lang/tr-TR.rc index 8e64071fd0..d8b18636d6 100644 --- a/dll/win32/msgina/lang/tr-TR.rc +++ b/dll/win32/msgina/lang/tr-TR.rc @@ -134,6 +134,33 @@ BEGIN // PUSHBUTTON "&Yardım", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "Bilgisayarı Kapat" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Bilgisayarın ne yapmasını istiyorsunuz?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "Tamam", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "İptal", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "Tamam", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "İptal", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Yardım", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/uk-UA.rc b/dll/win32/msgina/lang/uk-UA.rc index f4ba2ff702..5fbfc51a13 100644 --- a/dll/win32/msgina/lang/uk-UA.rc +++ b/dll/win32/msgina/lang/uk-UA.rc @@ -140,6 +140,33 @@ BEGIN // PUSHBUTTON "&Довідка", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// 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_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "&Виберіть одну з таких можливостей?", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "OK", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "Скасувати", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "OK", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "Скасувати", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "&Довідка", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/zh-CN.rc b/dll/win32/msgina/lang/zh-CN.rc index c7c5f19402..06ff044c0d 100644 --- a/dll/win32/msgina/lang/zh-CN.rc +++ b/dll/win32/msgina/lang/zh-CN.rc @@ -135,6 +135,33 @@ BEGIN // PUSHBUTTON "帮助(&H)", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "关闭 ReactOS" +FONT 9, "宋体" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "你想让计算机做什么?(&W)", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "确定", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "取消", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "确定", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "取消", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "帮助(&H)", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/lang/zh-TW.rc b/dll/win32/msgina/lang/zh-TW.rc index fd9aeab68b..737345ec51 100644 --- a/dll/win32/msgina/lang/zh-TW.rc +++ b/dll/win32/msgina/lang/zh-TW.rc @@ -134,6 +134,33 @@ BEGIN // PUSHBUTTON "幫助(&H)", IDHELP, 204, 122, 55, 14 END +IDD_SHUTDOWN_REASON DIALOGEX 0, 0, 275, 297 +STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION +// STYLE NOT WS_VISIBLE | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP +CAPTION "關閉 ReactOS" +FONT 9, "新細明體" +BEGIN + CONTROL IDI_ROSLOGO, IDC_ROSLOGO, "Static", SS_BITMAP, 0, 0, 275, 54 + ICON IDI_SHUTDOWN, IDI_SHUTDOWN, 9, 57, 21, 20, WS_GROUP + LTEXT "你想讓計算機做什麼?(&W)", IDC_STATIC, 39, 57, 167, 10 + COMBOBOX IDC_SHUTDOWN_LIST, 39, 70, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_SHUTDOWN_DESCRIPTION, 39, 93, 190, 27 + GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 9, 122, 257, 146 + LTEXT "Select the option that best describes why you want to shut down your computer.", IDC_STATIC, 39, 134, 190, 17 + LTEXT "&Option:", IDC_STATIC, 39, 154, 80, 8 + AUTOCHECKBOX "&Planned", IDC_REASON_PLANNED, 182, 154, 47, 10 + COMBOBOX IDC_REASON_LIST, 39, 165, 190, 210, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "", IDC_REASON_DESCRIPTION, 39, 184, 190, 27 + LTEXT "&Comment:", IDC_STATIC, 39, 214, 80, 8 + EDITTEXT IDC_REASON_COMMENT, 39, 224, 190, 35, ES_MULTILINE | WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "確定", IDOK, 150, 276, 55, 14, WS_GROUP + PUSHBUTTON "取消", IDCANCEL, 211, 276, 55, 14 + + // DEFPUSHBUTTON "確定", IDOK, 87, 276, 55, 14, WS_GROUP + // PUSHBUTTON "取消", IDCANCEL, 150, 276, 55, 14 + // PUSHBUTTON "幫助(&H)", IDHELP, 211, 276, 55, 14 +END + IDD_LEGALNOTICE_DLG DIALOGEX 0, 0, 280, 200 STYLE DS_MODALFRAME | DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "" diff --git a/dll/win32/msgina/resource.h b/dll/win32/msgina/resource.h index 61de45d2a9..ffee4c59d1 100644 --- a/dll/win32/msgina/resource.h +++ b/dll/win32/msgina/resource.h @@ -9,6 +9,7 @@ #define IDD_UNLOCK_DLG 105 #define IDD_SHUTDOWN_DLG 108 #define IDD_SHUTDOWN_FANCY 109 +#define IDD_SHUTDOWN_REASON 110 #define IDC_LOGOFF 1001 #define IDC_USERNAME 1002 @@ -25,6 +26,10 @@ #define IDC_LOGON_TO 1013 #define IDC_SHUTDOWN_LIST 1014 #define IDC_SHUTDOWN_DESCRIPTION 1015 +#define IDC_REASON_PLANNED 1016 +#define IDC_REASON_LIST 1017 +#define IDC_REASON_DESCRIPTION 1018 +#define IDC_REASON_COMMENT 1019 #define IDD_CHANGE_PASSWORD 106 #define IDC_CHANGEPWD_USERNAME 1013 diff --git a/dll/win32/msgina/shutdown.c b/dll/win32/msgina/shutdown.c index 11390e5f88..ca2528a7bb 100644 --- a/dll/win32/msgina/shutdown.c +++ b/dll/win32/msgina/shutdown.c @@ -26,8 +26,71 @@ typedef struct _SHUTDOWN_DLG_CONTEXT PGINA_CONTEXT pgContext; DWORD ShutdownOptions; BOOL bCloseDlg; + BOOL bReasonUI; } SHUTDOWN_DLG_CONTEXT, *PSHUTDOWN_DLG_CONTEXT; + +static +BOOL +GetShutdownReasonUI(VOID) +{ + OSVERSIONINFOEX VersionInfo; + DWORD dwValue, dwSize; + HKEY hKey; + LONG lRet; + + /* Query the policy value */ + lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, + L"Software\\Policies\\Microsoft\\Windows NT\\Reliability", + 0, + KEY_QUERY_VALUE, + &hKey); + if (lRet == ERROR_SUCCESS) + { + dwValue = 0; + dwSize = sizeof(dwValue); + RegQueryValueExW(hKey, + L"ShutdownReasonUI", + NULL, + NULL, + (LPBYTE)&dwValue, + &dwSize); + RegCloseKey(hKey); + + return (dwValue != 0) ? TRUE : FALSE; + } + + /* Query the machine value */ + lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, + L"Software\\Microsoft\\Windows\\CurrentVersion\\Reliability", + 0, + KEY_QUERY_VALUE, + &hKey); + if (lRet == ERROR_SUCCESS) + { + dwValue = 0; + dwSize = sizeof(dwValue); + RegQueryValueExW(hKey, + L"ShutdownReasonUI", + NULL, + NULL, + (LPBYTE)&dwValue, + &dwSize); + RegCloseKey(hKey); + + return (dwValue != 0) ? TRUE : FALSE; + } + + /* Return the default value */ + VersionInfo.dwOSVersionInfoSize = sizeof(VersionInfo); + if (!GetVersionEx((POSVERSIONINFO)&VersionInfo)) + return FALSE; + + return FALSE; +// return (VersionInfo.wProductType == VER_NT_WORKSTATION) ? FALSE : TRUE; +} + + DWORD LoadShutdownSelState(VOID) { @@ -427,12 +490,13 @@ ShutdownDialog( Context.pgContext = pgContext; Context.ShutdownOptions = ShutdownOptions; Context.bCloseDlg = FALSE; + Context.bReasonUI = GetShutdownReasonUI(); if (pgContext->hWlx && pgContext->pWlxFuncs) { ret = pgContext->pWlxFuncs->WlxDialogBoxParam(pgContext->hWlx, pgContext->hDllInstance, - MAKEINTRESOURCEW(IDD_SHUTDOWN_DLG), + MAKEINTRESOURCEW(Context.bReasonUI ? IDD_SHUTDOWN_REASON : IDD_SHUTDOWN_DLG), hwndDlg, ShutdownDialogProc, (LPARAM)&Context); @@ -440,7 +504,7 @@ ShutdownDialog( else { ret = DialogBoxParamW(pgContext->hDllInstance, - MAKEINTRESOURCEW(IDD_SHUTDOWN_DLG), + MAKEINTRESOURCEW(Context.bReasonUI ? IDD_SHUTDOWN_REASON : IDD_SHUTDOWN_DLG), hwndDlg, ShutdownDialogProc, (LPARAM)&Context);
6 years, 8 months
1
0
0
0
01/01: [BOOTDATA] Remove 'debugout.sys' mention since this driver has been removed in r26032 (ad07a1e5).
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=40d7381e283226adb54db…
commit 40d7381e283226adb54dbfbcf860a4a4191e0a8e Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Sat Apr 7 22:13:20 2018 +0200 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sat Apr 7 22:13:42 2018 +0200 [BOOTDATA] Remove 'debugout.sys' mention since this driver has been removed in r26032 (ad07a1e5). --- boot/bootdata/hivesys.inf | 7 ------- 1 file changed, 7 deletions(-) diff --git a/boot/bootdata/hivesys.inf b/boot/bootdata/hivesys.inf index 72d0fb8739..2bed731cb6 100644 --- a/boot/bootdata/hivesys.inf +++ b/boot/bootdata/hivesys.inf @@ -1510,13 +1510,6 @@ HKLM,"SYSTEM\CurrentControlSet\Services\Blue","ImagePath",0x00020000,"system32\d HKLM,"SYSTEM\CurrentControlSet\Services\Blue","Start",0x00010001,0x00000001 HKLM,"SYSTEM\CurrentControlSet\Services\Blue","Type",0x00010001,0x00000001 -; Debug output driver -HKLM,"SYSTEM\CurrentControlSet\Services\DebugOut","ErrorControl",0x00010001,0x00000000 -HKLM,"SYSTEM\CurrentControlSet\Services\DebugOut","Group",0x00000000,"Debug" -HKLM,"SYSTEM\CurrentControlSet\Services\DebugOut","ImagePath",0x00020000,"system32\drivers\debugout.sys" -HKLM,"SYSTEM\CurrentControlSet\Services\DebugOut","Start",0x00010001,0x00000004 -HKLM,"SYSTEM\CurrentControlSet\Services\DebugOut","Type",0x00010001,0x00000001 - ; EMS Serial Administration Console Driver HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","ErrorControl",0x00010001,0x00000000 HKLM,"SYSTEM\CurrentControlSet\Services\sacdrv","Group",0x00000000,"EMS"
6 years, 8 months
1
0
0
0
01/01: [EXPLORER] Remove double 'return' statement. Determining whether it should be HTBORDER or HTCLIENT is left as an exercise to the reader. Spotted by 'mudhead'. CORE-14528
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=eff4c2138d2ad47cf802f…
commit eff4c2138d2ad47cf802fd0ed4639ced7830fdec Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Sat Apr 7 19:06:04 2018 +0200 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sat Apr 7 19:06:22 2018 +0200 [EXPLORER] Remove double 'return' statement. Determining whether it should be HTBORDER or HTCLIENT is left as an exercise to the reader. Spotted by 'mudhead'. CORE-14528 --- base/shell/explorer/traywnd.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index a3c1f3670f..47da09b558 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -2205,8 +2205,7 @@ ChangePos: pt.x = (SHORT) LOWORD(lParam); pt.y = (SHORT) HIWORD(lParam); - if (PtInRect(&rcClient, - pt)) + if (PtInRect(&rcClient, pt)) { /* The user is trying to drag the tray window */ return HTCAPTION; @@ -2236,7 +2235,6 @@ ChangePos: } } return HTBORDER; - return TRUE; } LRESULT OnMoving(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
6 years, 8 months
1
0
0
0
08/08: [USERSRV] Hard-error improvements 7/7
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=29d56f2b296402179cf99…
commit 29d56f2b296402179cf99ffd654c6cd76876aa2e Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Fri Mar 23 23:50:50 2018 +0100 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sat Apr 7 18:48:13 2018 +0200 [USERSRV] Hard-error improvements 7/7 - Use a more descriptive "unknown hard error" string than Windows' one. - Improve the computation of the buffer size for the hard error message by using _vscwprintf() instead of just "guessing" which size the fully printf'ed message could be. --- win32ss/user/winsrv/usersrv/harderror.c | 317 ++++++++++++++++++++------------ 1 file changed, 201 insertions(+), 116 deletions(-) diff --git a/win32ss/user/winsrv/usersrv/harderror.c b/win32ss/user/winsrv/usersrv/harderror.c index 9248d60f92..62864ca695 100644 --- a/win32ss/user/winsrv/usersrv/harderror.c +++ b/win32ss/user/winsrv/usersrv/harderror.c @@ -61,6 +61,28 @@ RtlLoadUnicodeString( } +/* + * NOTE: _scwprintf() is NOT exported by ntdll.dll, + * only _vscwprintf() is, so we need to implement it here. + * Code comes from sdk/lib/crt/printf/_scwprintf.c . + */ +int +__cdecl +_scwprintf( + const wchar_t *format, + ...) +{ + int len; + va_list args; + + va_start(args, format); + len = _vscwprintf(format, args); + va_end(args); + + return len; +} + + /* FIXME */ int WINAPI @@ -349,9 +371,18 @@ UserpFormatMessages( OUT PULONG pdwTimeout, IN PHARDERROR_MSG Message) { + /* Special hardcoded messages */ + static const PCWSTR pszUnknownHardError = + L"Unknown Hard Error 0x%08lx\n" + L"Parameters: 0x%p 0x%p 0x%p 0x%p"; + static const PCWSTR pszExceptionHardError = + L"Exception processing message 0x%08lx\n" + L"Parameters: 0x%p 0x%p 0x%p 0x%p"; + NTSTATUS Status; OBJECT_ATTRIBUTES ObjectAttributes; HANDLE hProcess; + ULONG Severity = (ULONG)(Message->Status) >> 30; ULONG SizeOfStrings; ULONG_PTR Parameters[MAXIMUM_HARDERROR_PARAMETERS] = {0}; ULONG_PTR CopyParameters[MAXIMUM_HARDERROR_PARAMETERS]; @@ -361,8 +392,6 @@ UserpFormatMessages( PMESSAGE_RESOURCE_ENTRY MessageResource; PWSTR FormatString, pszBuffer; size_t cszBuffer; - ULONG Severity = (ULONG)(Message->Status) >> 30; - ULONG Size; /* Open client process */ InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL); @@ -379,6 +408,13 @@ UserpFormatMessages( /* Capture all string parameters from the process memory */ UserpCaptureStringParameters(Parameters, &SizeOfStrings, Message, hProcess); + /* Initialize the output strings */ + TextStringU->Length = 0; + TextStringU->Buffer[0] = UNICODE_NULL; + + CaptionStringU->Length = 0; + CaptionStringU->Buffer[0] = UNICODE_NULL; + /* * Check whether it is a service notification, in which case * we format the parameters and take the short route. @@ -395,29 +431,15 @@ UserpFormatMessages( */ *pdwType = (UINT)Parameters[2] & ~MB_SERVICE_NOTIFICATION; - /* Duplicate the UNICODE text message */ + /* + * Duplicate the UNICODE text message and caption. + * If no strings or invalid ones have been provided, keep + * the original buffers and reset the string lengths to zero. + */ if (Message->UnicodeStringParameterMask & 0x1) - { - /* A string has been provided: duplicate it */ UserpDuplicateParamStringToUnicodeString(TextStringU, (PCWSTR)Parameters[0]); - } - else - { - /* No string (or invalid one) has been provided: keep the original buffer and reset the string length to zero */ - TextStringU->Length = 0; - } - - /* Duplicate the UNICODE caption */ if (Message->UnicodeStringParameterMask & 0x2) - { - /* A string has been provided: duplicate it */ UserpDuplicateParamStringToUnicodeString(CaptionStringU, (PCWSTR)Parameters[1]); - } - else - { - /* No string (or invalid one) has been provided: keep the original buffer and reset the string length to zero */ - CaptionStringU->Length = 0; - } /* Set the timeout */ if (Message->NumberOfParameters >= 4) @@ -493,7 +515,8 @@ UserpFormatMessages( FileNameU = g_SystemProcessU; } - /* Get text string of the error code */ + /* Retrieve the description of the error code */ + FormatA.Buffer = NULL; Status = RtlFindMessage(GetModuleHandleW(L"ntdll"), (ULONG_PTR)RT_MESSAGETABLE, LANG_NEUTRAL, @@ -511,41 +534,40 @@ UserpFormatMessages( RtlInitAnsiString(&FormatA, (PSTR)MessageResource->Text); /* Status = */ RtlAnsiStringToUnicodeString(&FormatU, &FormatA, TRUE); } + ASSERT(FormatU.Buffer); } else { /* - * Fall back to hardcoded value. + * Fall back to unknown hard error format string. * NOTE: The value used here is ReactOS-specific: it allows specifying - * the exact hard error status value and the parameters. The version - * used on Windows only says "Unknown Hard Error". + * the exact hard error status value and the parameters, contrary to + * the one on Windows which only says: "Unknown Hard Error". */ -#if 0 - RtlInitUnicodeString(&FormatU, L"Unknown Hard Error 0x%08lx\n" - L"Parameters: 0x%p 0x%p 0x%p 0x%p"); -#else - RtlInitUnicodeString(&FormatU, L"Unknown Hard Error 0x%08lx"); - CopyParameters[0] = Message->Status; -#endif + RtlInitEmptyUnicodeString(&FormatU, NULL, 0); FormatA.Buffer = NULL; } FormatString = FormatU.Buffer; - /* Check whether a caption exists */ - if (FormatString[0] == L'{') + /* Check whether a caption is specified in the format string */ + if (FormatString && FormatString[0] == L'{') { /* Set caption start */ TempStringU.Buffer = ++FormatString; - /* Get size of the caption */ - for (Size = 0; *FormatString != UNICODE_NULL && *FormatString != L'}'; Size++) - FormatString++; + /* Get the caption size and find where the format string really starts */ + for (TempStringU.Length = 0; + *FormatString != UNICODE_NULL && *FormatString != L'}'; + ++TempStringU.Length) + { + ++FormatString; + } /* Skip '}', '\r', '\n' */ FormatString += 3; - TempStringU.Length = (USHORT)(Size * sizeof(WCHAR)); + TempStringU.Length *= sizeof(WCHAR); TempStringU.MaximumLength = TempStringU.Length; } else @@ -612,6 +634,7 @@ UserpFormatMessages( } } CaptionStringU->Length = 0; + CaptionStringU->Buffer[0] = UNICODE_NULL; /* Append the file name, the separator and the caption text */ RtlStringCbPrintfW(CaptionStringU->Buffer, @@ -620,19 +643,22 @@ UserpFormatMessages( &WindowTitleU, &FileNameU, &TempStringU); CaptionStringU->Length = (USHORT)(wcslen(CaptionStringU->Buffer) * sizeof(WCHAR)); - /* Free string buffers if needed */ + /* Free the strings if needed */ if (WindowTitleU.Buffer) RtlFreeUnicodeString(&WindowTitleU); if (hProcess) RtlFreeUnicodeString(&FileNameU); - // FIXME: What is 42 == ?? - Size = 42; + Format2A.Buffer = NULL; + + /* If we have an unknown hard error, skip the special cases handling */ + if (!FormatString) + goto BuildMessage; /* Check if this is an exception message */ if (Message->Status == STATUS_UNHANDLED_EXCEPTION) { ULONG ExceptionCode = CopyParameters[0]; - /* Get text string of the exception code */ + /* Retrieve the description of the exception code */ Status = RtlFindMessage(GetModuleHandleW(L"ntdll"), (ULONG_PTR)RT_MESSAGETABLE, LANG_NEUTRAL, @@ -650,10 +676,12 @@ UserpFormatMessages( RtlInitAnsiString(&Format2A, (PSTR)MessageResource->Text); /* Status = */ RtlAnsiStringToUnicodeString(&Format2U, &Format2A, TRUE); } + ASSERT(Format2U.Buffer); /* Handle special cases */ if (ExceptionCode == STATUS_ACCESS_VIOLATION) { + /* Use a new FormatString */ FormatString = Format2U.Buffer; CopyParameters[0] = CopyParameters[1]; CopyParameters[1] = CopyParameters[3]; @@ -664,6 +692,7 @@ UserpFormatMessages( } else if (ExceptionCode == STATUS_IN_PAGE_ERROR) { + /* Use a new FormatString */ FormatString = Format2U.Buffer; CopyParameters[0] = CopyParameters[1]; CopyParameters[1] = CopyParameters[3]; @@ -702,24 +731,64 @@ UserpFormatMessages( CopyParameters[1] = CopyParameters[0]; CopyParameters[0] = (ULONG_PTR)L"unknown software exception"; } + } - /* Add explanation text for dialog buttons */ - if (Message->ValidResponseOptions == OptionOk || - Message->ValidResponseOptions == OptionOkCancel) +BuildMessage: + /* + * Calculate buffer length for the text message. If FormatString + * is NULL this means we have an unknown hard error whose format + * string is in FormatU. + */ + cszBuffer = 0; + /* Wrap in SEH to protect from invalid string parameters */ + _SEH2_TRY + { + if (!FormatString) { - /* Reserve space for one newline and the OK-terminate-program string */ - Size += 1 + (g_OKTerminateU.Length / sizeof(WCHAR)); + /* Fall back to unknown hard error format string, and use the original parameters */ + cszBuffer = _scwprintf(pszUnknownHardError, + Message->Status, + Parameters[0], Parameters[1], + Parameters[2], Parameters[3]); + cszBuffer *= sizeof(WCHAR); } - if (Message->ValidResponseOptions == OptionOkCancel) + else { - /* Reserve space for one newline and the CANCEL-debug-program string */ - Size += 1 + (g_CancelDebugU.Length / sizeof(WCHAR)); + cszBuffer = _scwprintf(FormatString, + CopyParameters[0], CopyParameters[1], + CopyParameters[2], CopyParameters[3]); + cszBuffer *= sizeof(WCHAR); + + /* Add a description for the dialog buttons */ + if (Message->Status == STATUS_UNHANDLED_EXCEPTION) + { + if (Message->ValidResponseOptions == OptionOk || + Message->ValidResponseOptions == OptionOkCancel) + { + /* Reserve space for one newline and the OK-terminate-program string */ + cszBuffer += sizeof(WCHAR) + g_OKTerminateU.Length; + } + if (Message->ValidResponseOptions == OptionOkCancel) + { + /* Reserve space for one newline and the CANCEL-debug-program string */ + cszBuffer += sizeof(WCHAR) + g_CancelDebugU.Length; + } + } } } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + /* An exception occurred, use a default string with the original parameters */ + cszBuffer = _scwprintf(pszExceptionHardError, + Message->Status, + Parameters[0], Parameters[1], + Parameters[2], Parameters[3]); + cszBuffer *= sizeof(WCHAR); + } + _SEH2_END; + + cszBuffer += SizeOfStrings + sizeof(UNICODE_NULL); - /* Calculate buffer length for the text message */ - cszBuffer = FormatU.Length + SizeOfStrings + Size * sizeof(WCHAR) + - sizeof(UNICODE_NULL); if (TextStringU->MaximumLength < cszBuffer) { /* Allocate a larger buffer for the text message */ @@ -737,6 +806,7 @@ UserpFormatMessages( } } TextStringU->Length = 0; + TextStringU->Buffer[0] = UNICODE_NULL; /* Wrap in SEH to protect from invalid string parameters */ _SEH2_TRY @@ -744,32 +814,45 @@ UserpFormatMessages( /* Print the string into the buffer */ pszBuffer = TextStringU->Buffer; cszBuffer = TextStringU->MaximumLength; - RtlStringCbPrintfExW(pszBuffer, cszBuffer, - &pszBuffer, &cszBuffer, - STRSAFE_IGNORE_NULLS, - FormatString, - CopyParameters[0], CopyParameters[1], - CopyParameters[2], CopyParameters[3]); - - /* Add explanation text for dialog buttons */ - if (Message->Status == STATUS_UNHANDLED_EXCEPTION) + + if (!FormatString) { - if (Message->ValidResponseOptions == OptionOk || - Message->ValidResponseOptions == OptionOkCancel) - { - RtlStringCbPrintfExW(pszBuffer, cszBuffer, - &pszBuffer, &cszBuffer, - STRSAFE_IGNORE_NULLS, - L"\n%wZ", - &g_OKTerminateU); - } - if (Message->ValidResponseOptions == OptionOkCancel) + /* Fall back to unknown hard error format string, and use the original parameters */ + RtlStringCbPrintfW(pszBuffer, cszBuffer, + pszUnknownHardError, + Message->Status, + Parameters[0], Parameters[1], + Parameters[2], Parameters[3]); + } + else + { + RtlStringCbPrintfExW(pszBuffer, cszBuffer, + &pszBuffer, &cszBuffer, + 0, + FormatString, + CopyParameters[0], CopyParameters[1], + CopyParameters[2], CopyParameters[3]); + + /* Add a description for the dialog buttons */ + if (Message->Status == STATUS_UNHANDLED_EXCEPTION) { - RtlStringCbPrintfExW(pszBuffer, cszBuffer, - &pszBuffer, &cszBuffer, - STRSAFE_IGNORE_NULLS, - L"\n%wZ", - &g_CancelDebugU); + if (Message->ValidResponseOptions == OptionOk || + Message->ValidResponseOptions == OptionOkCancel) + { + RtlStringCbPrintfExW(pszBuffer, cszBuffer, + &pszBuffer, &cszBuffer, + 0, + L"\n%wZ", + &g_OKTerminateU); + } + if (Message->ValidResponseOptions == OptionOkCancel) + { + RtlStringCbPrintfExW(pszBuffer, cszBuffer, + &pszBuffer, &cszBuffer, + 0, + L"\n%wZ", + &g_CancelDebugU); + } } } } @@ -781,8 +864,7 @@ UserpFormatMessages( RtlStringCbPrintfW(TextStringU->Buffer, TextStringU->MaximumLength, - L"Exception processing message 0x%08lx\n" - L"Parameters: 0x%p 0x%p 0x%p 0x%p", + pszExceptionHardError, Message->Status, Parameters[0], Parameters[1], Parameters[2], Parameters[3]); @@ -791,12 +873,12 @@ UserpFormatMessages( TextStringU->Length = (USHORT)(wcslen(TextStringU->Buffer) * sizeof(WCHAR)); - /* Free converted Unicode strings */ + /* Free the converted UNICODE strings */ if (Format2A.Buffer) RtlFreeUnicodeString(&Format2U); if (FormatA.Buffer) RtlFreeUnicodeString(&FormatU); Quit: - /* Final cleanup */ + /* Free the captured parameters */ UserpFreeStringParameters(Parameters, Message); } @@ -850,40 +932,43 @@ GetRegInt( static BOOL UserpShowInformationBalloon( - IN PCWSTR Text, - IN PCWSTR Caption, - IN UINT Type, + IN PUNICODE_STRING TextStringU, + IN PUNICODE_STRING CaptionStringU, + IN UINT Type, IN PHARDERROR_MSG Message) { ULONG ShellErrorMode; - HWND hwnd; + HWND hWndTaskman; COPYDATASTRUCT CopyData; PBALLOON_HARD_ERROR_DATA pdata; DWORD dwSize, cbTextLen, cbTitleLen; PWCHAR pText, pCaption; - DWORD ret, dwResult; + DWORD ret; + DWORD_PTR dwResult; /* Query the shell error mode value */ ShellErrorMode = GetRegInt(L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Windows", L"ShellErrorMode", 0); - /* Make the shell display the hard error message in balloon only if necessary */ + /* Make the shell display the hard error message only if necessary */ if (ShellErrorMode != 1) return FALSE; - hwnd = GetTaskmanWindow(); - if (!hwnd) + /* Retrieve the shell task window */ + hWndTaskman = GetTaskmanWindow(); + if (!hWndTaskman) { DPRINT1("Failed to find shell task window (last error %lu)\n", GetLastError()); return FALSE; } - cbTextLen = ((Text ? wcslen(Text) : 0) + 1) * sizeof(WCHAR); - cbTitleLen = ((Caption ? wcslen(Caption) : 0) + 1) * sizeof(WCHAR); + cbTextLen = TextStringU->Length + sizeof(UNICODE_NULL); + cbTitleLen = CaptionStringU->Length + sizeof(UNICODE_NULL); dwSize = sizeof(BALLOON_HARD_ERROR_DATA); dwSize += cbTextLen + cbTitleLen; + /* Build the data buffer */ pdata = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, dwSize); if (!pdata) { @@ -893,31 +978,27 @@ UserpShowInformationBalloon( pdata->cbHeaderSize = sizeof(BALLOON_HARD_ERROR_DATA); pdata->Status = Message->Status; + pdata->dwType = Type; - if (NT_SUCCESS(Message->Status)) - pdata->dwType = MB_OK; - else if (Message->Status == STATUS_SERVICE_NOTIFICATION) - pdata->dwType = Type; - else - pdata->dwType = MB_ICONINFORMATION; - - pdata->TitleOffset = pdata->cbHeaderSize; - pdata->MessageOffset = pdata->TitleOffset; - pdata->MessageOffset += cbTitleLen; + pdata->TitleOffset = pdata->cbHeaderSize; + pdata->MessageOffset = pdata->TitleOffset + cbTitleLen; pCaption = (PWCHAR)((ULONG_PTR)pdata + pdata->TitleOffset); pText = (PWCHAR)((ULONG_PTR)pdata + pdata->MessageOffset); - wcscpy(pCaption, Caption); - wcscpy(pText, Text); + RtlStringCbCopyNW(pCaption, cbTitleLen, CaptionStringU->Buffer, CaptionStringU->Length); + RtlStringCbCopyNW(pText, cbTextLen, TextStringU->Buffer, TextStringU->Length); + + /* Send the message */ + /* Retrieve a unique system-wide message to communicate hard error data with the shell */ CopyData.dwData = RegisterWindowMessageW(L"HardError"); CopyData.cbData = dwSize; CopyData.lpData = pdata; dwResult = FALSE; - - ret = SendMessageTimeoutW(hwnd, WM_COPYDATA, 0, (LPARAM)&CopyData, + ret = SendMessageTimeoutW(hWndTaskman, WM_COPYDATA, 0, (LPARAM)&CopyData, SMTO_NORMAL | SMTO_ABORTIFHUNG, 3000, &dwResult); + /* Free the buffer */ RtlFreeHeap(RtlGetProcessHeap(), 0, pdata); return (ret && dwResult) ? TRUE : FALSE; @@ -926,18 +1007,21 @@ UserpShowInformationBalloon( static HARDERROR_RESPONSE UserpMessageBox( - IN PCWSTR Text, - IN PCWSTR Caption, - IN UINT Type, - IN ULONG Timeout) + IN PUNICODE_STRING TextStringU, + IN PUNICODE_STRING CaptionStringU, + IN UINT Type, + IN ULONG Timeout) { ULONG MessageBoxResponse; DPRINT("Text = '%S', Caption = '%S', Type = 0x%lx\n", - Text, Caption, Type); + TextStringU->Buffer, CaptionStringU->Buffer, Type); /* Display a message box */ - MessageBoxResponse = MessageBoxTimeoutW(NULL, Text, Caption, Type, 0, Timeout); + MessageBoxResponse = MessageBoxTimeoutW(NULL, + TextStringU->Buffer, + CaptionStringU->Buffer, + Type, 0, Timeout); /* Return response value */ switch (MessageBoxResponse) @@ -1028,7 +1112,8 @@ UserServerHardError( { if (Message->NumberOfParameters < 3) { - DPRINT1("Invalid NumberOfParameters = %d for STATUS_SERVICE_NOTIFICATION\n", Message->NumberOfParameters); + DPRINT1("Invalid NumberOfParameters = %d for STATUS_SERVICE_NOTIFICATION\n", + Message->NumberOfParameters); return; // STATUS_INVALID_PARAMETER; } // (Message->UnicodeStringParameterMask & 0x3) @@ -1062,8 +1147,8 @@ UserServerHardError( { /* Display the balloon */ Message->Response = ResponseOk; - if (UserpShowInformationBalloon(TextU.Buffer, - CaptionU.Buffer, + if (UserpShowInformationBalloon(&TextU, + &CaptionU, dwType, Message)) { @@ -1073,8 +1158,8 @@ UserServerHardError( } /* Display the message box */ - Message->Response = UserpMessageBox(TextU.Buffer, - CaptionU.Buffer, + Message->Response = UserpMessageBox(&TextU, + &CaptionU, dwType, Timeout);
6 years, 8 months
1
0
0
0
07/08: [USERSRV] Hard-error improvements 6/7
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2363fee51f835e2087ea2…
commit 2363fee51f835e2087ea2291f57250b062dc1478 Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Sat Mar 24 23:07:35 2018 +0100 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sat Apr 7 18:48:12 2018 +0200 [USERSRV] Hard-error improvements 6/7 Make UserpFormatMessages() return the possible timeout for the hard error; use it when displaying the hard error message boxes. --- win32ss/user/winsrv/usersrv/harderror.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/win32ss/user/winsrv/usersrv/harderror.c b/win32ss/user/winsrv/usersrv/harderror.c index 9a1d2c7f32..9248d60f92 100644 --- a/win32ss/user/winsrv/usersrv/harderror.c +++ b/win32ss/user/winsrv/usersrv/harderror.c @@ -346,6 +346,7 @@ UserpFormatMessages( IN OUT PUNICODE_STRING TextStringU, IN OUT PUNICODE_STRING CaptionStringU, OUT PUINT pdwType, + OUT PULONG pdwTimeout, IN PHARDERROR_MSG Message) { NTSTATUS Status; @@ -418,6 +419,12 @@ UserpFormatMessages( CaptionStringU->Length = 0; } + /* Set the timeout */ + if (Message->NumberOfParameters >= 4) + *pdwTimeout = (ULONG)Parameters[3]; + else + *pdwTimeout = INFINITE; + goto Quit; } @@ -462,6 +469,9 @@ UserpFormatMessages( *pdwType |= MB_SYSTEMMODAL | MB_SETFOREGROUND; + /* Set the timeout */ + *pdwTimeout = INFINITE; + /* Copy the Parameters array locally */ RtlCopyMemory(&CopyParameters, Parameters, sizeof(CopyParameters)); @@ -991,7 +1001,8 @@ UserServerHardError( IN PHARDERROR_MSG Message) { ULONG ErrorMode; - UINT dwType = 0; + UINT dwType = 0; + ULONG Timeout = INFINITE; UNICODE_STRING TextU, CaptionU; WCHAR LocalTextBuffer[256]; WCHAR LocalCaptionBuffer[256]; @@ -1029,7 +1040,7 @@ UserServerHardError( /* Format the message caption and text */ RtlInitEmptyUnicodeString(&TextU, LocalTextBuffer, sizeof(LocalTextBuffer)); RtlInitEmptyUnicodeString(&CaptionU, LocalCaptionBuffer, sizeof(LocalCaptionBuffer)); - UserpFormatMessages(&TextU, &CaptionU, &dwType, /* &Timeout, */ Message); + UserpFormatMessages(&TextU, &CaptionU, &dwType, &Timeout, Message); /* Log the hard error message */ UserpLogHardError(&TextU, &CaptionU); @@ -1065,7 +1076,7 @@ UserServerHardError( Message->Response = UserpMessageBox(TextU.Buffer, CaptionU.Buffer, dwType, - (ULONG)-1); + Timeout); Quit: /* Free the strings if they have been reallocated */
6 years, 8 months
1
0
0
0
06/08: [USERSRV] Hard-error improvements 5/7 - Implement STATUS_SERVICE_NOTIFICATION handling.
by Hermès Bélusca-Maïto
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=08d70697a39752c2ff6a8…
commit 08d70697a39752c2ff6a8d82ee673671aef9d459 Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> AuthorDate: Mon Mar 19 02:22:20 2018 +0100 Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> CommitDate: Sat Apr 7 18:48:11 2018 +0200 [USERSRV] Hard-error improvements 5/7 - Implement STATUS_SERVICE_NOTIFICATION handling. - In UserpCaptureStringParameters(), always capture the parameter strings with a terminating NULL. Also, no need to convert them to ANSI if they are used with a STATUS_SERVICE_NOTIFICATION message. - Determine within UserpFormatMessages() the message box flags to be used, either from the message parameters (if STATUS_SERVICE_NOTIFICATION) or from the proposed response options and message status severity. These flags are then used by both UserpShowInformationBalloon()/UserpShellHardError() and by UserpMessageBox(). - Improve Message validation (especially for STATUS_SERVICE_NOTIFICATION). - Try to display the hard error status number if it's an unknown one. --- win32ss/user/winsrv/usersrv/harderror.c | 319 +++++++++++++++++++++----------- 1 file changed, 212 insertions(+), 107 deletions(-) diff --git a/win32ss/user/winsrv/usersrv/harderror.c b/win32ss/user/winsrv/usersrv/harderror.c index ad3815a434..9a1d2c7f32 100644 --- a/win32ss/user/winsrv/usersrv/harderror.c +++ b/win32ss/user/winsrv/usersrv/harderror.c @@ -114,8 +114,8 @@ UserpCaptureStringParameters( continue; } - /* Allocate a buffer for the string */ - TempStringU.MaximumLength = ParamStringU.Length; + /* Allocate a buffer for the string and reserve a NULL terminator */ + TempStringU.MaximumLength = ParamStringU.Length + sizeof(UNICODE_NULL); TempStringU.Length = ParamStringU.Length; TempStringU.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, @@ -140,36 +140,47 @@ UserpCaptureStringParameters( RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringU.Buffer); continue; } + /* NULL-terminate the string */ + TempStringU.Buffer[TempStringU.Length / sizeof(WCHAR)] = UNICODE_NULL; DPRINT("ParamString = \'%wZ\'\n", &TempStringU); - /* Allocate a buffer for converted to ANSI string */ - TempStringA.MaximumLength = RtlUnicodeStringToAnsiSize(&TempStringU); - TempStringA.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), - HEAP_ZERO_MEMORY, - TempStringA.MaximumLength); - if (!TempStringA.Buffer) + if (Message->Status == STATUS_SERVICE_NOTIFICATION) { - /* We failed, skip this string */ - DPRINT1("Cannot allocate memory with size %u, skipping.\n", TempStringA.MaximumLength); - RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringU.Buffer); - continue; + /* Just keep the allocated NULL-terminated UNICODE string */ + Parameters[nParam] = (ULONG_PTR)TempStringU.Buffer; + Size += TempStringU.Length; } - - /* Convert string to ANSI and free temporary buffer */ - Status = RtlUnicodeStringToAnsiString(&TempStringA, &TempStringU, FALSE); - RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringU.Buffer); - if (!NT_SUCCESS(Status)) + else { - /* We failed, skip this string */ - DPRINT1("RtlUnicodeStringToAnsiString() failed, Status 0x%lx, skipping.\n", Status); - RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringA.Buffer); - continue; - } + /* Allocate a buffer for converted to ANSI string */ + TempStringA.MaximumLength = RtlUnicodeStringToAnsiSize(&TempStringU); + TempStringA.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), + HEAP_ZERO_MEMORY, + TempStringA.MaximumLength); + if (!TempStringA.Buffer) + { + /* We failed, skip this string */ + DPRINT1("Cannot allocate memory with size %u, skipping.\n", TempStringA.MaximumLength); + RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringU.Buffer); + continue; + } - /* Note: RtlUnicodeStringToAnsiString returns NULL terminated string */ - Parameters[nParam] = (ULONG_PTR)TempStringA.Buffer; - Size += TempStringU.Length; + /* Convert string to ANSI and free temporary buffer */ + Status = RtlUnicodeStringToAnsiString(&TempStringA, &TempStringU, FALSE); + RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringU.Buffer); + if (!NT_SUCCESS(Status)) + { + /* We failed, skip this string */ + DPRINT1("RtlUnicodeStringToAnsiString() failed, Status 0x%lx, skipping.\n", Status); + RtlFreeHeap(RtlGetProcessHeap(), 0, TempStringA.Buffer); + continue; + } + + /* Note: RtlUnicodeStringToAnsiString() returns a NULL-terminated string */ + Parameters[nParam] = (ULONG_PTR)TempStringA.Buffer; + Size += TempStringU.Length; + } } else { @@ -293,11 +304,48 @@ UserpGetClientFileName( return STATUS_SUCCESS; } +static +VOID +UserpDuplicateParamStringToUnicodeString( + IN OUT PUNICODE_STRING UnicodeString, + IN PCWSTR ParamString) +{ + UNICODE_STRING FormatU, TempStringU; + + /* Calculate buffer length for the text message */ + RtlInitUnicodeString(&FormatU, (PWSTR)ParamString); + if (UnicodeString->MaximumLength < FormatU.MaximumLength) + { + /* Duplicate the text message in a larger buffer */ + if (NT_SUCCESS(RtlDuplicateUnicodeString(RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE, + &FormatU, &TempStringU))) + { + *UnicodeString = TempStringU; + } + else + { + /* We could not allocate a larger buffer; continue using the smaller original buffer */ + DPRINT1("Cannot allocate memory for UnicodeString, use original buffer.\n"); + + /* Copy the truncated string, NULL-terminate it */ + FormatU.MaximumLength = UnicodeString->MaximumLength; + FormatU.Length = FormatU.MaximumLength - sizeof(UNICODE_NULL); + RtlCopyUnicodeString(UnicodeString, &FormatU); + } + } + else + { + /* Copy the string, NULL-terminate it */ + RtlCopyUnicodeString(UnicodeString, &FormatU); + } +} + static VOID UserpFormatMessages( IN OUT PUNICODE_STRING TextStringU, IN OUT PUNICODE_STRING CaptionStringU, + OUT PUINT pdwType, IN PHARDERROR_MSG Message) { NTSTATUS Status; @@ -312,7 +360,7 @@ UserpFormatMessages( PMESSAGE_RESOURCE_ENTRY MessageResource; PWSTR FormatString, pszBuffer; size_t cszBuffer; - ULONG Severity; + ULONG Severity = (ULONG)(Message->Status) >> 30; ULONG Size; /* Open client process */ @@ -330,6 +378,90 @@ UserpFormatMessages( /* Capture all string parameters from the process memory */ UserpCaptureStringParameters(Parameters, &SizeOfStrings, Message, hProcess); + /* + * Check whether it is a service notification, in which case + * we format the parameters and take the short route. + */ + if (Message->Status == STATUS_SERVICE_NOTIFICATION) + { + /* Close the process handle */ + if (hProcess) NtClose(hProcess); + + /* + * Retrieve the message box flags. Note that we filter out + * MB_SERVICE_NOTIFICATION to not enter an infinite recursive + * loop when we will call MessageBox() later on. + */ + *pdwType = (UINT)Parameters[2] & ~MB_SERVICE_NOTIFICATION; + + /* Duplicate the UNICODE text message */ + if (Message->UnicodeStringParameterMask & 0x1) + { + /* A string has been provided: duplicate it */ + UserpDuplicateParamStringToUnicodeString(TextStringU, (PCWSTR)Parameters[0]); + } + else + { + /* No string (or invalid one) has been provided: keep the original buffer and reset the string length to zero */ + TextStringU->Length = 0; + } + + /* Duplicate the UNICODE caption */ + if (Message->UnicodeStringParameterMask & 0x2) + { + /* A string has been provided: duplicate it */ + UserpDuplicateParamStringToUnicodeString(CaptionStringU, (PCWSTR)Parameters[1]); + } + else + { + /* No string (or invalid one) has been provided: keep the original buffer and reset the string length to zero */ + CaptionStringU->Length = 0; + } + + goto Quit; + } + + /* Set the message box type */ + *pdwType = 0; + switch (Message->ValidResponseOptions) + { + case OptionAbortRetryIgnore: + *pdwType = MB_ABORTRETRYIGNORE; + break; + case OptionOk: + *pdwType = MB_OK; + break; + case OptionOkCancel: + *pdwType = MB_OKCANCEL; + break; + case OptionRetryCancel: + *pdwType = MB_RETRYCANCEL; + break; + case OptionYesNo: + *pdwType = MB_YESNO; + break; + case OptionYesNoCancel: + *pdwType = MB_YESNOCANCEL; + break; + case OptionShutdownSystem: + *pdwType = MB_OK; + break; + case OptionOkNoWait: + *pdwType = MB_OK; + break; + case OptionCancelTryContinue: + *pdwType = MB_CANCELTRYCONTINUE; + break; + } + + /* Set the severity icon */ + // STATUS_SEVERITY_SUCCESS + if (Severity == STATUS_SEVERITY_INFORMATIONAL) *pdwType |= MB_ICONINFORMATION; + else if (Severity == STATUS_SEVERITY_WARNING) *pdwType |= MB_ICONWARNING; + else if (Severity == STATUS_SEVERITY_ERROR) *pdwType |= MB_ICONERROR; + + *pdwType |= MB_SYSTEMMODAL | MB_SETFOREGROUND; + /* Copy the Parameters array locally */ RtlCopyMemory(&CopyParameters, Parameters, sizeof(CopyParameters)); @@ -351,8 +483,6 @@ UserpFormatMessages( FileNameU = g_SystemProcessU; } - Severity = (ULONG)(Message->Status) >> 30; - /* Get text string of the error code */ Status = RtlFindMessage(GetModuleHandleW(L"ntdll"), (ULONG_PTR)RT_MESSAGETABLE, @@ -368,14 +498,25 @@ UserpFormatMessages( } else { - RtlInitAnsiString(&FormatA, (PCHAR)MessageResource->Text); + RtlInitAnsiString(&FormatA, (PSTR)MessageResource->Text); /* Status = */ RtlAnsiStringToUnicodeString(&FormatU, &FormatA, TRUE); } } else { - /* Fall back to hardcoded value */ - RtlInitUnicodeString(&FormatU, L"Unknown Hard Error"); + /* + * Fall back to hardcoded value. + * NOTE: The value used here is ReactOS-specific: it allows specifying + * the exact hard error status value and the parameters. The version + * used on Windows only says "Unknown Hard Error". + */ +#if 0 + RtlInitUnicodeString(&FormatU, L"Unknown Hard Error 0x%08lx\n" + L"Parameters: 0x%p 0x%p 0x%p 0x%p"); +#else + RtlInitUnicodeString(&FormatU, L"Unknown Hard Error 0x%08lx"); + CopyParameters[0] = Message->Status; +#endif FormatA.Buffer = NULL; } @@ -444,7 +585,7 @@ UserpFormatMessages( /* Calculate buffer length for the caption */ cszBuffer = WindowTitleU.Length + FileNameU.Length + TempStringU.Length + 3 * sizeof(WCHAR) + sizeof(UNICODE_NULL); - if (cszBuffer > CaptionStringU->MaximumLength) + if (CaptionStringU->MaximumLength < cszBuffer) { /* Allocate a larger buffer for the caption */ pszBuffer = RtlAllocateHeap(RtlGetProcessHeap(), @@ -452,8 +593,8 @@ UserpFormatMessages( cszBuffer); if (!pszBuffer) { - /* We could not allocate a larger buffer; continue using the smaller static buffer */ - DPRINT1("Cannot allocate memory for CaptionStringU, use static buffer.\n"); + /* We could not allocate a larger buffer; continue using the smaller original buffer */ + DPRINT1("Cannot allocate memory for CaptionStringU, use original buffer.\n"); } else { @@ -496,7 +637,7 @@ UserpFormatMessages( } else { - RtlInitAnsiString(&Format2A, (PCHAR)MessageResource->Text); + RtlInitAnsiString(&Format2A, (PSTR)MessageResource->Text); /* Status = */ RtlAnsiStringToUnicodeString(&Format2U, &Format2A, TRUE); } @@ -552,6 +693,7 @@ UserpFormatMessages( CopyParameters[0] = (ULONG_PTR)L"unknown software exception"; } + /* Add explanation text for dialog buttons */ if (Message->ValidResponseOptions == OptionOk || Message->ValidResponseOptions == OptionOkCancel) { @@ -568,7 +710,7 @@ UserpFormatMessages( /* Calculate buffer length for the text message */ cszBuffer = FormatU.Length + SizeOfStrings + Size * sizeof(WCHAR) + sizeof(UNICODE_NULL); - if (cszBuffer > TextStringU->MaximumLength) + if (TextStringU->MaximumLength < cszBuffer) { /* Allocate a larger buffer for the text message */ pszBuffer = RtlAllocateHeap(RtlGetProcessHeap(), @@ -576,8 +718,8 @@ UserpFormatMessages( cszBuffer); if (!pszBuffer) { - /* We could not allocate a larger buffer; continue using the smaller static buffer */ - DPRINT1("Cannot allocate memory for TextStringU, use static buffer.\n"); + /* We could not allocate a larger buffer; continue using the smaller original buffer */ + DPRINT1("Cannot allocate memory for TextStringU, use original buffer.\n"); } else { @@ -599,6 +741,7 @@ UserpFormatMessages( CopyParameters[0], CopyParameters[1], CopyParameters[2], CopyParameters[3]); + /* Add explanation text for dialog buttons */ if (Message->Status == STATUS_UNHANDLED_EXCEPTION) { if (Message->ValidResponseOptions == OptionOk || @@ -642,6 +785,7 @@ UserpFormatMessages( if (Format2A.Buffer) RtlFreeUnicodeString(&Format2U); if (FormatA.Buffer) RtlFreeUnicodeString(&FormatU); +Quit: /* Final cleanup */ UserpFreeStringParameters(Parameters, Message); } @@ -695,9 +839,11 @@ GetRegInt( } static BOOL -UserpShowInformationBalloon(PWSTR Text, - PWSTR Caption, - PHARDERROR_MSG Message) +UserpShowInformationBalloon( + IN PCWSTR Text, + IN PCWSTR Caption, + IN UINT Type, + IN PHARDERROR_MSG Message) { ULONG ShellErrorMode; HWND hwnd; @@ -741,7 +887,7 @@ UserpShowInformationBalloon(PWSTR Text, if (NT_SUCCESS(Message->Status)) pdata->dwType = MB_OK; else if (Message->Status == STATUS_SERVICE_NOTIFICATION) - pdata->dwType = Message->Parameters[2]; + pdata->dwType = Type; else pdata->dwType = MB_ICONINFORMATION; @@ -768,68 +914,17 @@ UserpShowInformationBalloon(PWSTR Text, } static -ULONG +HARDERROR_RESPONSE UserpMessageBox( IN PCWSTR Text, IN PCWSTR Caption, - IN ULONG ValidResponseOptions, - IN ULONG Severity, - IN ULONG Timeout) + IN UINT Type, + IN ULONG Timeout) { - ULONG Type, MessageBoxResponse; - - /* Set the message box type */ - switch (ValidResponseOptions) - { - case OptionAbortRetryIgnore: - Type = MB_ABORTRETRYIGNORE; - break; - case OptionOk: - Type = MB_OK; - break; - case OptionOkCancel: - Type = MB_OKCANCEL; - break; - case OptionRetryCancel: - Type = MB_RETRYCANCEL; - break; - case OptionYesNo: - Type = MB_YESNO; - break; - case OptionYesNoCancel: - Type = MB_YESNOCANCEL; - break; - case OptionShutdownSystem: - Type = MB_RETRYCANCEL; // FIXME??? - break; - case OptionOkNoWait: - /* - * At that point showing the balloon failed. Is that correct? - */ - Type = MB_OK; // FIXME! - break; - case OptionCancelTryContinue: - Type = MB_CANCELTRYCONTINUE; - break; - - /* Anything else is invalid */ - default: - { - DPRINT1("Unknown ValidResponseOptions = %d\n", ValidResponseOptions); - return ResponseNotHandled; - } - } - - /* Set severity */ - // STATUS_SEVERITY_SUCCESS - if (Severity == STATUS_SEVERITY_INFORMATIONAL) Type |= MB_ICONINFORMATION; - else if (Severity == STATUS_SEVERITY_WARNING) Type |= MB_ICONWARNING; - else if (Severity == STATUS_SEVERITY_ERROR) Type |= MB_ICONERROR; - - Type |= MB_SYSTEMMODAL | MB_SETFOREGROUND; + ULONG MessageBoxResponse; - DPRINT("Text = '%S', Caption = '%S', Severity = %d, Type = 0x%lx\n", - Text, Caption, Severity, Type); + DPRINT("Text = '%S', Caption = '%S', Type = 0x%lx\n", + Text, Caption, Type); /* Display a message box */ MessageBoxResponse = MessageBoxTimeoutW(NULL, Text, Caption, Type, 0, Timeout); @@ -846,6 +941,7 @@ UserpMessageBox( case IDRETRY: return ResponseRetry; case IDTRYAGAIN: return ResponseTryAgain; case IDCONTINUE: return ResponseContinue; + default: return ResponseNotHandled; } return ResponseNotHandled; @@ -895,6 +991,7 @@ UserServerHardError( IN PHARDERROR_MSG Message) { ULONG ErrorMode; + UINT dwType = 0; UNICODE_STRING TextU, CaptionU; WCHAR LocalTextBuffer[256]; WCHAR LocalCaptionBuffer[256]; @@ -907,16 +1004,24 @@ UserServerHardError( /* Make sure we don't have too many parameters */ if (Message->NumberOfParameters > MAXIMUM_HARDERROR_PARAMETERS) { - // FIXME: Windows just fails (STATUS_INVALID_PARAMETER) & returns ResponseNotHandled. + // NOTE: Windows just fails (STATUS_INVALID_PARAMETER) & returns ResponseNotHandled. + DPRINT1("Invalid NumberOfParameters = %d\n", Message->NumberOfParameters); Message->NumberOfParameters = MAXIMUM_HARDERROR_PARAMETERS; } if (Message->ValidResponseOptions > OptionCancelTryContinue) { - // STATUS_INVALID_PARAMETER; - Message->Response = ResponseNotHandled; - return; + DPRINT1("Unknown ValidResponseOptions = %d\n", Message->ValidResponseOptions); + return; // STATUS_INVALID_PARAMETER; + } + if (Message->Status == STATUS_SERVICE_NOTIFICATION) + { + if (Message->NumberOfParameters < 3) + { + DPRINT1("Invalid NumberOfParameters = %d for STATUS_SERVICE_NOTIFICATION\n", Message->NumberOfParameters); + return; // STATUS_INVALID_PARAMETER; + } + // (Message->UnicodeStringParameterMask & 0x3) } - // TODO: More message validation: check NumberOfParameters wrt. Message Status code. /* Re-initialize the hard errors cache */ UserInitHardErrorsCache(); @@ -924,7 +1029,7 @@ UserServerHardError( /* Format the message caption and text */ RtlInitEmptyUnicodeString(&TextU, LocalTextBuffer, sizeof(LocalTextBuffer)); RtlInitEmptyUnicodeString(&CaptionU, LocalCaptionBuffer, sizeof(LocalCaptionBuffer)); - UserpFormatMessages(&TextU, &CaptionU, Message); + UserpFormatMessages(&TextU, &CaptionU, &dwType, /* &Timeout, */ Message); /* Log the hard error message */ UserpLogHardError(&TextU, &CaptionU); @@ -948,6 +1053,7 @@ UserServerHardError( Message->Response = ResponseOk; if (UserpShowInformationBalloon(TextU.Buffer, CaptionU.Buffer, + dwType, Message)) { Message->Response = ResponseOk; @@ -958,8 +1064,7 @@ UserServerHardError( /* Display the message box */ Message->Response = UserpMessageBox(TextU.Buffer, CaptionU.Buffer, - Message->ValidResponseOptions, - (ULONG)(Message->Status) >> 30, + dwType, (ULONG)-1); Quit:
6 years, 8 months
1
0
0
0
← Newer
1
...
12
13
14
15
16
17
18
...
25
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Results per page:
10
25
50
100
200