Here's how to call a Message Box with a timeout, the message box closes itself after the timeout period was reached.
The trick is to call an undocumented MessageBoxTimeout API located in user32.dll.
The
function returns an integer value of either a MB_TIMEDOUT value
(indicating the timeout period was reached and the Message Box auto
closed), or a value representing the button the user clicked.
Notice that the return value is always 1, when a message box with only an OK button (MB_OK Flag) is used.