SendMessageTimeout

The SendMessageTimeout function sends the specified message to a window or windows. The function calls the window procedure for the specified window and, if the specified window belongs to a different thread, does not return until the window procedure has processed the message or the specified time-out period has elapsed. If the window receiving the message belongs to the same queue as the current thread, the window procedure is called directly — the time-out value is ignored.

LRESULT SendMessageTimeout(
  HWND hWnd,           // handle of destination window
  UINT Msg,            // message to send
  WPARAM wParam,       // first message parameter
  LPARAM lParam,       // second message parameter
  UINT fuFlags,        // how to send the message
  UINT uTimeout,       // time-out duration
  LPDWORD lpdwResult   // return value for synchronous call
);
 

Parameters

hWnd
Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows.
Msg
Specifies the message to be sent.
wParam
Specifies additional message-specific information.
lParam
Specifies additional message-specific information.
fuFlags
Specifies how to send the message. This parameter can be a combination of the following values:
Value Meaning
SMTO_ABORTIFHUNG Returns without waiting for the time-out period to elapse if the receiving process appears to be in a "hung" state.
SMTO_BLOCK Prevents the calling thread from processing any other requests until the function returns.
SMTO_NORMAL The calling thread is not prevented from processing other requests while waiting for the function to return.
SMTO_NOTIMEOUTIFNOTHUNG Windows NT 5.0 and later: Does not return when the time-out period elapses if the receiving thread is not hung.

uTimeout
Specifies the duration, in milliseconds, of the time-out period. If the message is a broadcast message, each window can us the full time-out period. For example, if you specify a 5 second time-out period and there are three top-level windows that fail to process the message, you could have up to a 15 second delay.
lpdwResult
Specifies the result of the message processing and depends on the message sent.

Return Values

If the function succeeds, the return value is nonzero.

If the function fails or time out, the return value is zero. To get extended error information, call GetLastError. If GetLastError returns zero, then the function timed out. SendMessageTimeout does not provide information about individual windows timing out if HWND_BROADCAST is used.

QuickInfo

  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Unsupported.
  Header: Declared in winuser.h.
  Import Library: Use user32.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT.

See Also

Messages and Message Queues Overview, Message and Message Queue Functions, InSendMessage, PostMessage, SendDlgItemMessage, SendMessage, SendMessageCallback, SendNotifyMessage