diff --git a/PInvoke/User32/WinUser.System.cs b/PInvoke/User32/WinUser.System.cs
index 88ed1806..2765e40d 100644
--- a/PInvoke/User32/WinUser.System.cs
+++ b/PInvoke/User32/WinUser.System.cs
@@ -447,6 +447,9 @@ namespace Vanara.PInvoke
/// The Yes button was selected.
IDYES = 6,
+
+ /// A call to MessageBoxTimeout has timed-out.
+ MB_TIMEDOUT = 32000,
}
/// A set of bit-flags that specify properties of the MouseKeys feature.
@@ -3800,10 +3803,8 @@ namespace Vanara.PInvoke
public static extern bool MessageBeep(uint uType = 0);
///
- ///
/// Displays a modal dialog box that contains a system icon, a set of buttons, and a brief application-specific message, such as
/// status or error information. The message box returns an integer value that indicates which button the user clicked.
- ///
///
///
/// Type: HWND
@@ -3830,188 +3831,197 @@ namespace Vanara.PInvoke
/// To indicate the buttons displayed in the message box, specify one of the following values.
///
///
- /// Value
- /// Meaning
+ /// Value
+ /// Meaning
///
/// -
- /// MB_ABORTRETRYIGNORE 0x00000002L
- /// The message box contains three push buttons: Abort, Retry, and Ignore.
+ /// MB_ABORTRETRYIGNORE 0x00000002L
+ /// The message box contains three push buttons: Abort, Retry, and Ignore.
///
/// -
- /// MB_CANCELTRYCONTINUE 0x00000006L
- /// The message box contains three push buttons: Cancel, Try Again, Continue. Use this message box type instead of MB_ABORTRETRYIGNORE.
+ /// MB_CANCELTRYCONTINUE 0x00000006L
+ ///
+ /// The message box contains three push buttons: Cancel, Try Again, Continue. Use this message box type instead
+ /// of MB_ABORTRETRYIGNORE.
+ ///
///
/// -
- /// MB_HELP 0x00004000L
- ///
- /// Adds a Help button to the message box. When the user clicks the Help button or presses F1, the system sends a WM_HELP message to
- /// the owner.
- ///
+ /// MB_HELP 0x00004000L
+ ///
+ /// Adds a Help button to the message box. When the user clicks the Help button or presses F1, the system sends a
+ /// WM_HELP message to the owner.
+ ///
///
/// -
- /// MB_OK 0x00000000L
- /// The message box contains one push button: OK. This is the default.
+ /// MB_OK 0x00000000L
+ /// The message box contains one push button: OK. This is the default.
///
/// -
- /// MB_OKCANCEL 0x00000001L
- /// The message box contains two push buttons: OK and Cancel.
+ /// MB_OKCANCEL 0x00000001L
+ /// The message box contains two push buttons: OK and Cancel.
///
/// -
- /// MB_RETRYCANCEL 0x00000005L
- /// The message box contains two push buttons: Retry and Cancel.
+ /// MB_RETRYCANCEL 0x00000005L
+ /// The message box contains two push buttons: Retry and Cancel.
///
/// -
- /// MB_YESNO 0x00000004L
- /// The message box contains two push buttons: Yes and No.
+ /// MB_YESNO 0x00000004L
+ /// The message box contains two push buttons: Yes and No.
///
/// -
- /// MB_YESNOCANCEL 0x00000003L
- /// The message box contains three push buttons: Yes, No, and Cancel.
+ /// MB_YESNOCANCEL 0x00000003L
+ /// The message box contains three push buttons: Yes, No, and Cancel.
///
///
+ /// Â
/// To display an icon in the message box, specify one of the following values.
///
///
- /// Value
- /// Meaning
+ /// Value
+ /// Meaning
///
/// -
- /// MB_ICONEXCLAMATION 0x00000030L
- /// An exclamation-point icon appears in the message box.
+ /// MB_ICONEXCLAMATION 0x00000030L
+ /// An exclamation-point icon appears in the message box.
///
/// -
- /// MB_ICONWARNING 0x00000030L
- /// An exclamation-point icon appears in the message box.
+ /// MB_ICONWARNING 0x00000030L
+ /// An exclamation-point icon appears in the message box.
///
/// -
- /// MB_ICONINFORMATION 0x00000040L
- /// An icon consisting of a lowercase letter i in a circle appears in the message box.
+ /// MB_ICONINFORMATION 0x00000040L
+ /// An icon consisting of a lowercase letter i in a circle appears in the message box.
///
/// -
- /// MB_ICONASTERISK 0x00000040L
- /// An icon consisting of a lowercase letter i in a circle appears in the message box.
+ /// MB_ICONASTERISK 0x00000040L
+ /// An icon consisting of a lowercase letter i in a circle appears in the message box.
///
/// -
- /// MB_ICONQUESTION 0x00000020L
- ///
+ /// MB_ICONQUESTION 0x00000020L
+ ///
/// A question-mark icon appears in the message box. The question-mark message icon is no longer recommended because it does not
/// clearly represent a specific type of message and because the phrasing of a message as a question could apply to any message type.
/// In addition, users can confuse the message symbol question mark with Help information. Therefore, do not use this question mark
/// message symbol in your message boxes. The system continues to support its inclusion only for backward compatibility.
- ///
+ ///
///
/// -
- /// MB_ICONSTOP 0x00000010L
- /// A stop-sign icon appears in the message box.
+ /// MB_ICONSTOP 0x00000010L
+ /// A stop-sign icon appears in the message box.
///
/// -
- /// MB_ICONERROR 0x00000010L
- /// A stop-sign icon appears in the message box.
+ /// MB_ICONERROR 0x00000010L
+ /// A stop-sign icon appears in the message box.
///
/// -
- /// MB_ICONHAND 0x00000010L
- /// A stop-sign icon appears in the message box.
+ /// MB_ICONHAND 0x00000010L
+ /// A stop-sign icon appears in the message box.
///
///
+ /// Â
/// To indicate the default button, specify one of the following values.
///
///
- /// Value
- /// Meaning
+ /// Value
+ /// Meaning
///
/// -
- /// MB_DEFBUTTON1 0x00000000L
- ///
- /// The first button is the default button. MB_DEFBUTTON1 is the default unless MB_DEFBUTTON2, MB_DEFBUTTON3, or MB_DEFBUTTON4 is specified.
- ///
+ /// MB_DEFBUTTON1 0x00000000L
+ ///
+ /// The first button is the default button. MB_DEFBUTTON1 is the default unless MB_DEFBUTTON2, MB_DEFBUTTON3, or
+ /// MB_DEFBUTTON4 is specified.
+ ///
///
/// -
- /// MB_DEFBUTTON2 0x00000100L
- /// The second button is the default button.
+ /// MB_DEFBUTTON2 0x00000100L
+ /// The second button is the default button.
///
/// -
- /// MB_DEFBUTTON3 0x00000200L
- /// The third button is the default button.
+ /// MB_DEFBUTTON3 0x00000200L
+ /// The third button is the default button.
///
/// -
- /// MB_DEFBUTTON4 0x00000300L
- /// The fourth button is the default button.
+ /// MB_DEFBUTTON4 0x00000300L
+ /// The fourth button is the default button.
///
///
+ /// Â
/// To indicate the modality of the dialog box, specify one of the following values.
///
///
- /// Value
- /// Meaning
+ /// Value
+ /// Meaning
///
/// -
- /// MB_APPLMODAL 0x00000000L
- ///
- /// The user must respond to the message box before continuing work in the window identified by the hWnd parameter. However, the user
- /// can move to the windows of other threads and work in those windows. Depending on the hierarchy of windows in the application, the
- /// user may be able to move to other windows within the thread. All child windows of the parent of the message box are automatically
- /// disabled, but pop-up windows are not. MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor MB_TASKMODAL is specified.
- ///
+ /// MB_APPLMODAL 0x00000000L
+ ///
+ /// The user must respond to the message box before continuing work in the window identified by the hWnd parameter. However,
+ /// the user can move to the windows of other threads and work in those windows. Depending on the hierarchy of windows in the
+ /// application, the user may be able to move to other windows within the thread. All child windows of the parent of the message box
+ /// are automatically disabled, but pop-up windows are not. MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor
+ /// MB_TASKMODAL is specified.
+ ///
///
/// -
- /// MB_SYSTEMMODAL 0x00001000L
- ///
- /// Same as MB_APPLMODAL except that the message box has the WS_EX_TOPMOST style. Use system-modal message boxes to notify the user
- /// of serious, potentially damaging errors that require immediate attention (for example, running out of memory). This flag has no
- /// effect on the user's ability to interact with windows other than those associated with hWnd.
- ///
+ /// MB_SYSTEMMODAL 0x00001000L
+ ///
+ /// Same as MB_APPLMODAL except that the message box has the WS_EX_TOPMOST style. Use system-modal message boxes to notify the
+ /// user of serious, potentially damaging errors that require immediate attention (for example, running out of memory). This flag has
+ /// no effect on the user's ability to interact with windows other than those associated with hWnd.
+ ///
///
/// -
- /// MB_TASKMODAL 0x00002000L
- ///
- /// Same as MB_APPLMODAL except that all the top-level windows belonging to the current thread are disabled if the hWnd parameter is
- /// NULL. Use this flag when the calling application or library does not have a window handle available but still needs to prevent
- /// input to other windows in the calling thread without suspending other threads.
- ///
+ /// MB_TASKMODAL 0x00002000L
+ ///
+ /// Same as MB_APPLMODAL except that all the top-level windows belonging to the current thread are disabled if the hWnd
+ /// parameter is NULL. Use this flag when the calling application or library does not have a window handle available but still
+ /// needs to prevent input to other windows in the calling thread without suspending other threads.
+ ///
///
///
+ /// Â
/// To specify other options, use one or more of the following values.
///
///
- /// Value
- /// Meaning
+ /// Value
+ /// Meaning
///
/// -
- /// MB_DEFAULT_DESKTOP_ONLY 0x00020000L
- ///
+ /// MB_DEFAULT_DESKTOP_ONLY 0x00020000L
+ ///
/// Same as desktop of the interactive window station. For more information, see Window Stations. If the current input desktop is not
- /// the default desktop, MessageBox does not return until the user switches to the default desktop.
- ///
+ /// the default desktop, MessageBox does not return until the user switches to the default desktop.
+ ///
///
/// -
- /// MB_RIGHT 0x00080000L
- /// The text is right-justified.
+ /// MB_RIGHT 0x00080000L
+ /// The text is right-justified.
///
/// -
- /// MB_RTLREADING 0x00100000L
- /// Displays message and caption text using right-to-left reading order on Hebrew and Arabic systems.
+ /// MB_RTLREADING 0x00100000L
+ /// Displays message and caption text using right-to-left reading order on Hebrew and Arabic systems.
///
/// -
- /// MB_SETFOREGROUND 0x00010000L
- ///
+ /// MB_SETFOREGROUND 0x00010000L
+ ///
/// The message box becomes the foreground window. Internally, the system calls the SetForegroundWindow function for the message box.
- ///
+ ///
///
/// -
- /// MB_TOPMOST 0x00040000L
- /// The message box is created with the WS_EX_TOPMOST window style.
+ /// MB_TOPMOST 0x00040000L
+ /// The message box is created with the WS_EX_TOPMOST window style.
///
/// -
- /// MB_SERVICE_NOTIFICATION 0x00200000L
- ///
+ /// MB_SERVICE_NOTIFICATION 0x00200000L
+ ///
/// The caller is a service notifying the user of an event. The function displays a message box on the current active desktop, even
- /// if there is no user logged on to the computer. Terminal Services: If the calling thread has an impersonation token, the function
- /// directs the message box to the session specified in the impersonation token. If this flag is set, the hWnd parameter must be
- /// NULL. This is so that the message box can appear on a desktop other than the desktop corresponding to the hWnd. For information
- /// on security considerations in regard to using this flag, see Interactive Services. In particular, be aware that this flag can
- /// produce interactive content on a locked desktop and should therefore be used for only a very limited set of scenarios, such as
- /// resource exhaustion.
- ///
+ /// if there is no user logged on to the computer. Terminal Services: If the calling thread has an impersonation token, the
+ /// function directs the message box to the session specified in the impersonation token. If this flag is set, the hWnd
+ /// parameter must be NULL. This is so that the message box can appear on a desktop other than the desktop corresponding to
+ /// the hWnd. For information on security considerations in regard to using this flag, see Interactive Services. In
+ /// particular, be aware that this flag can produce interactive content on a locked desktop and should therefore be used for only a
+ /// very limited set of scenarios, such as resource exhaustion.
+ ///
///
///
///
@@ -4019,89 +4029,93 @@ namespace Vanara.PInvoke
/// Type: int
///
/// If a message box has a Cancel button, the function returns the IDCANCEL value if either the ESC key is pressed or
- /// the Cancel button is selected. If the message box has no Cancel button, pressing ESC has no effect.
+ /// the Cancel button is selected. If the message box has no Cancel button, pressing ESC will no effect - unless an
+ /// MB_OK button is present. If an MB_OK button is displayed and the user presses ESC, the return value will be IDOK.
///
/// If the function fails, the return value is zero. To get extended error information, call GetLastError.
/// If the function succeeds, the return value is one of the following menu-item values.
///
///
- /// Return code/value
- /// Description
+ /// Return code/value
+ /// Description
///
/// -
- /// IDABORT 3
- /// The Abort button was selected.
+ /// IDABORT 3
+ /// The Abort button was selected.
///
/// -
- /// IDCANCEL 2
- /// The Cancel button was selected.
+ /// IDCANCEL 2
+ /// The Cancel button was selected.
///
/// -
- /// IDCONTINUE 11
- /// The Continue button was selected.
+ /// IDCONTINUE 11
+ /// The Continue button was selected.
///
/// -
- /// IDIGNORE 5
- /// The Ignore button was selected.
+ /// IDIGNORE 5
+ /// The Ignore button was selected.
///
/// -
- /// IDNO 7
- /// The No button was selected.
+ /// IDNO 7
+ /// The No button was selected.
///
/// -
- /// IDOK 1
- /// The OK button was selected.
+ /// IDOK 1
+ /// The OK button was selected.
///
/// -
- /// IDRETRY 4
- /// The Retry button was selected.
+ /// IDRETRY 4
+ /// The Retry button was selected.
///
/// -
- /// IDTRYAGAIN 10
- /// The Try Again button was selected.
+ /// IDTRYAGAIN 10
+ /// The Try Again button was selected.
///
/// -
- /// IDYES 6
- /// The Yes button was selected.
+ /// IDYES 6
+ /// The Yes button was selected.
///
///
///
///
- /// The following system icons can be used in a message box by setting the uType parameter to the corresponding flag value.
+ ///
+ /// The following system icons can be used in a message box by setting the uType parameter to the corresponding flag value.
+ ///
///
///
- /// Icon
- /// Flag values
+ /// Icon
+ /// Flag values
///
/// -
- ///
- /// MB_ICONHAND, MB_ICONSTOP, or MB_ICONERROR
+ ///
+ /// MB_ICONHAND, MB_ICONSTOP, or MB_ICONERROR
///
/// -
- ///
- /// MB_ICONQUESTION
+ ///
+ /// MB_ICONQUESTION
///
/// -
- ///
- /// MB_ICONEXCLAMATION or MB_ICONWARNING
+ ///
+ /// MB_ICONEXCLAMATION or MB_ICONWARNING
///
/// -
- ///
- /// MB_ICONASTERISK or MB_ICONINFORMATION
+ ///
+ /// MB_ICONASTERISK or MB_ICONINFORMATION
///
///
+ /// Â
///
/// Adding two right-to-left marks (RLMs), represented by Unicode formatting character U+200F, in the beginning of a MessageBox
/// display string is interpreted by the MessageBox rendering engine so as to cause the reading order of the MessageBox to be
/// rendered as right-to-left (RTL).
///
///
- /// When you use a system-modal message box to indicate that the system is low on memory, the strings pointed to by the lpText and
- /// lpCaption parameters should not be taken from a resource file because an attempt to load the resource may fail.
+ /// When you use a system-modal message box to indicate that the system is low on memory, the strings pointed to by the lpText
+ /// and lpCaption parameters should not be taken from a resource file because an attempt to load the resource may fail.
///
///
- /// If you create a message box while a dialog box is present, use a handle to the dialog box as the hWnd parameter. The hWnd
- /// parameter should not identify a child window, such as a control in a dialog box.
+ /// If you create a message box while a dialog box is present, use a handle to the dialog box as the hWnd parameter. The
+ /// hWnd parameter should not identify a child window, such as a control in a dialog box.
///
/// Examples
///
@@ -4114,13 +4128,14 @@ namespace Vanara.PInvoke
/// The following image shows the output from the preceding code example:
/// For another message box example, see Displaying a Message Box.
///
- // https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-messagebox int MessageBox( HWND hWnd, LPCTSTR lpText,
- // LPCTSTR lpCaption, UINT uType );
+ // https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
+ // int MessageBox( [in, optional] HWND hWnd, [in, optional] LPCTSTR lpText, [in, optional] LPCTSTR lpCaption, [in] UINT uType );
[DllImport(Lib.User32, SetLastError = true, CharSet = CharSet.Auto)]
[PInvokeData("winuser.h", MSDNShortId = "messagebox")]
public static extern MB_RESULT MessageBox([Optional] HWND hWnd, string lpText, [Optional] string lpCaption, [Optional] MB_FLAGS uType);
///
+ /// This function is undocumented, but has been available since Windows XP. Use with caution.
/// Creates, displays, and operates a message box. The message box contains application-defined message text and title, any icon, and
/// any combination of predefined push buttons.
///
@@ -4137,6 +4152,377 @@ namespace Vanara.PInvoke
[PInvokeData("Winuser.h")]
public static extern MB_RESULT MessageBoxIndirect(in MSGBOXPARAMS lpMsgBoxParams);
+ ///
+ /// Displays a modal dialog box that contains a system icon, a set of buttons, and a brief application-specific message, such as
+ /// status or error information. The message box returns an integer value that indicates which button the user clicked.
+ ///
+ /// Type: HWND
+ ///
+ /// A handle to the owner window of the message box to be created. If this parameter is NULL, the message box has no owner window.
+ ///
+ /// Type: LPCTSTR
+ ///
+ /// The message to be displayed. If the string consists of more than one line, you can separate the lines using a carriage return
+ /// and/or linefeed character between each line.
+ ///
+ /// Type: LPCTSTR
+ /// The dialog box title. If this parameter is NULL, the default title is Error.
+ /// Type: UINT
+ ///
+ /// The contents and behavior of the dialog box. This parameter can be a combination of flags from the following groups of flags.
+ ///
+ /// To indicate the buttons displayed in the message box, specify one of the following values.
+ ///
+ ///
+ /// Value
+ /// Meaning
+ ///
+ /// -
+ ///
+ /// MB_ABORTRETRYIGNORE 0x00000002L
+ /// The message box contains three push buttons: Abort, Retry, and Ignore.
+ ///
+ /// -
+ ///
+ /// MB_CANCELTRYCONTINUE 0x00000006L
+ ///
+ /// The message box contains three push buttons: Cancel, Try Again, Continue. Use this message box type instead
+ /// of MB_ABORTRETRYIGNORE.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_HELP 0x00004000L
+ ///
+ /// Adds a Help button to the message box. When the user clicks the Help button or presses F1, the system sends a
+ /// WM_HELP message to the owner.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_OK 0x00000000L
+ /// The message box contains one push button: OK. This is the default.
+ ///
+ /// -
+ ///
+ /// MB_OKCANCEL 0x00000001L
+ /// The message box contains two push buttons: OK and Cancel.
+ ///
+ /// -
+ ///
+ /// MB_RETRYCANCEL 0x00000005L
+ /// The message box contains two push buttons: Retry and Cancel.
+ ///
+ /// -
+ ///
+ /// MB_YESNO 0x00000004L
+ /// The message box contains two push buttons: Yes and No.
+ ///
+ /// -
+ ///
+ /// MB_YESNOCANCEL 0x00000003L
+ /// The message box contains three push buttons: Yes, No, and Cancel.
+ ///
+ ///
+ /// Â
+ /// To display an icon in the message box, specify one of the following values.
+ ///
+ ///
+ /// Value
+ /// Meaning
+ ///
+ /// -
+ ///
+ /// MB_ICONEXCLAMATION 0x00000030L
+ /// An exclamation-point icon appears in the message box.
+ ///
+ /// -
+ ///
+ /// MB_ICONWARNING 0x00000030L
+ /// An exclamation-point icon appears in the message box.
+ ///
+ /// -
+ ///
+ /// MB_ICONINFORMATION 0x00000040L
+ /// An icon consisting of a lowercase letter i in a circle appears in the message box.
+ ///
+ /// -
+ ///
+ /// MB_ICONASTERISK 0x00000040L
+ /// An icon consisting of a lowercase letter i in a circle appears in the message box.
+ ///
+ /// -
+ ///
+ /// MB_ICONQUESTION 0x00000020L
+ ///
+ /// A question-mark icon appears in the message box. The question-mark message icon is no longer recommended because it does not
+ /// clearly represent a specific type of message and because the phrasing of a message as a question could apply to any message type.
+ /// In addition, users can confuse the message symbol question mark with Help information. Therefore, do not use this question mark
+ /// message symbol in your message boxes. The system continues to support its inclusion only for backward compatibility.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_ICONSTOP 0x00000010L
+ /// A stop-sign icon appears in the message box.
+ ///
+ /// -
+ ///
+ /// MB_ICONERROR 0x00000010L
+ /// A stop-sign icon appears in the message box.
+ ///
+ /// -
+ ///
+ /// MB_ICONHAND 0x00000010L
+ /// A stop-sign icon appears in the message box.
+ ///
+ ///
+ /// Â
+ /// To indicate the default button, specify one of the following values.
+ ///
+ ///
+ /// Value
+ /// Meaning
+ ///
+ /// -
+ ///
+ /// MB_DEFBUTTON1 0x00000000L
+ ///
+ /// The first button is the default button. MB_DEFBUTTON1 is the default unless MB_DEFBUTTON2, MB_DEFBUTTON3, or
+ /// MB_DEFBUTTON4 is specified.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_DEFBUTTON2 0x00000100L
+ /// The second button is the default button.
+ ///
+ /// -
+ ///
+ /// MB_DEFBUTTON3 0x00000200L
+ /// The third button is the default button.
+ ///
+ /// -
+ ///
+ /// MB_DEFBUTTON4 0x00000300L
+ /// The fourth button is the default button.
+ ///
+ ///
+ /// Â
+ /// To indicate the modality of the dialog box, specify one of the following values.
+ ///
+ ///
+ /// Value
+ /// Meaning
+ ///
+ /// -
+ ///
+ /// MB_APPLMODAL 0x00000000L
+ ///
+ /// The user must respond to the message box before continuing work in the window identified by the hWnd parameter. However,
+ /// the user can move to the windows of other threads and work in those windows. Depending on the hierarchy of windows in the
+ /// application, the user may be able to move to other windows within the thread. All child windows of the parent of the message box
+ /// are automatically disabled, but pop-up windows are not. MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor
+ /// MB_TASKMODAL is specified.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_SYSTEMMODAL 0x00001000L
+ ///
+ /// Same as MB_APPLMODAL except that the message box has the WS_EX_TOPMOST style. Use system-modal message boxes to notify the
+ /// user of serious, potentially damaging errors that require immediate attention (for example, running out of memory). This flag has
+ /// no effect on the user's ability to interact with windows other than those associated with hWnd.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_TASKMODAL 0x00002000L
+ ///
+ /// Same as MB_APPLMODAL except that all the top-level windows belonging to the current thread are disabled if the hWnd
+ /// parameter is NULL. Use this flag when the calling application or library does not have a window handle available but still
+ /// needs to prevent input to other windows in the calling thread without suspending other threads.
+ ///
+ ///
+ ///
+ /// Â
+ /// To specify other options, use one or more of the following values.
+ ///
+ ///
+ /// Value
+ /// Meaning
+ ///
+ /// -
+ ///
+ /// MB_DEFAULT_DESKTOP_ONLY 0x00020000L
+ ///
+ /// Same as desktop of the interactive window station. For more information, see Window Stations. If the current input desktop is not
+ /// the default desktop, MessageBox does not return until the user switches to the default desktop.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_RIGHT 0x00080000L
+ /// The text is right-justified.
+ ///
+ /// -
+ ///
+ /// MB_RTLREADING 0x00100000L
+ /// Displays message and caption text using right-to-left reading order on Hebrew and Arabic systems.
+ ///
+ /// -
+ ///
+ /// MB_SETFOREGROUND 0x00010000L
+ ///
+ /// The message box becomes the foreground window. Internally, the system calls the SetForegroundWindow function for the message box.
+ ///
+ ///
+ /// -
+ ///
+ /// MB_TOPMOST 0x00040000L
+ /// The message box is created with the WS_EX_TOPMOST window style.
+ ///
+ /// -
+ ///
+ /// MB_SERVICE_NOTIFICATION 0x00200000L
+ ///
+ /// The caller is a service notifying the user of an event. The function displays a message box on the current active desktop, even
+ /// if there is no user logged on to the computer. Terminal Services: If the calling thread has an impersonation token, the
+ /// function directs the message box to the session specified in the impersonation token. If this flag is set, the hWnd
+ /// parameter must be NULL. This is so that the message box can appear on a desktop other than the desktop corresponding to
+ /// the hWnd. For information on security considerations in regard to using this flag, see Interactive Services. In
+ /// particular, be aware that this flag can produce interactive content on a locked desktop and should therefore be used for only a
+ /// very limited set of scenarios, such as resource exhaustion.
+ ///
+ ///
+ ///
+ /// The language for the text displayed in the message box button(s). Specifying a value of zero (0) indicates to display the button text in the default system language. If this parameter is MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), the current language associated with the calling thread is used.
+ /// To specify a language other than the current language, use the MAKELANGID macro to create this parameter.
+ ///
+ /// Parameter is in milliseconds so 1000 will be 1 second etc. Messagebox won't time-out if is 0.
+ ///
+ /// Type: int
+ ///
+ /// If a message box has a Cancel button, the function returns the IDCANCEL value if either the ESC key is pressed or
+ /// the Cancel button is selected. If the message box has no Cancel button, pressing ESC will no effect - unless an
+ /// MB_OK button is present. If an MB_OK button is displayed and the user presses ESC, the return value will be IDOK.
+ ///
+ /// If the function fails, the return value is zero. To get extended error information, call GetLastError.
+ /// If the function succeeds, the return value is one of the following menu-item values.
+ ///
+ ///
+ /// Return code/value
+ /// Description
+ ///
+ /// -
+ ///
+ /// IDABORT 3
+ /// The Abort button was selected.
+ ///
+ /// -
+ ///
+ /// IDCANCEL 2
+ /// The Cancel button was selected.
+ ///
+ /// -
+ ///
+ /// IDCONTINUE 11
+ /// The Continue button was selected.
+ ///
+ /// -
+ ///
+ /// IDIGNORE 5
+ /// The Ignore button was selected.
+ ///
+ /// -
+ ///
+ /// IDNO 7
+ /// The No button was selected.
+ ///
+ /// -
+ ///
+ /// IDOK 1
+ /// The OK button was selected.
+ ///
+ /// -
+ ///
+ /// IDRETRY 4
+ /// The Retry button was selected.
+ ///
+ /// -
+ ///
+ /// IDTRYAGAIN 10
+ /// The Try Again button was selected.
+ ///
+ /// -
+ ///
+ /// IDYES 6
+ /// The Yes button was selected.
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The following system icons can be used in a message box by setting the uType parameter to the corresponding flag value.
+ ///
+ ///
+ ///
+ /// Icon
+ /// Flag values
+ ///
+ /// -
+ ///
+ ///
+ /// MB_ICONHAND, MB_ICONSTOP, or MB_ICONERROR
+ ///
+ /// -
+ ///
+ ///
+ /// MB_ICONQUESTION
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// MB_ICONEXCLAMATION or MB_ICONWARNING
+ ///
+ /// -
+ ///
+ ///
+ /// MB_ICONASTERISK or MB_ICONINFORMATION
+ ///
+ ///
+ /// Â
+ ///
+ /// Adding two right-to-left marks (RLMs), represented by Unicode formatting character U+200F, in the beginning of a MessageBox
+ /// display string is interpreted by the MessageBox rendering engine so as to cause the reading order of the MessageBox to be
+ /// rendered as right-to-left (RTL).
+ ///
+ ///
+ /// When you use a system-modal message box to indicate that the system is low on memory, the strings pointed to by the lpText
+ /// and lpCaption parameters should not be taken from a resource file because an attempt to load the resource may fail.
+ ///
+ ///
+ /// If you create a message box while a dialog box is present, use a handle to the dialog box as the hWnd parameter. The
+ /// hWnd parameter should not identify a child window, such as a control in a dialog box.
+ ///
+ /// Examples
+ ///
+ /// In the following example, the application displays a message box that prompts the user for an action after an error condition has
+ /// occurred. The message box displays the message that describes the error condition and how to resolve it. The
+ /// MB_CANCELTRYCONTINUE style directs MessageBox to provide three buttons with which the user can choose how to
+ /// proceed. The MB_DEFBUTTON2 style sets the default focus on the second button of the message box, in this case, the Try
+ /// Again button.
+ ///
+ /// The following image shows the output from the preceding code example:
+ /// For another message box example, see Displaying a Message Box.
+ ///
+ // https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
+ // int MessageBox( [in, optional] HWND hWnd, [in, optional] LPCTSTR lpText, [in, optional] LPCTSTR lpCaption, [in] UINT uType );
+ [PInvokeData("winuser.h")]
+ [DllImport(Lib.User32, SetLastError = true, CharSet = CharSet.Auto)]
+ public static extern MB_RESULT MessageBoxTimeout([Optional] HWND hWnd, string lpText, [Optional] string lpCaption, [Optional] MB_FLAGS uType, [Optional] LANGID wLanguageId, [Optional] uint dwMilliseconds);
+
///
/// Indicates that the system cannot be shut down and sets a reason string to be displayed to the user if system shutdown is initiated.
///