SendMessageTimeoutA 函数 (winuser.h)

将指定的消息发送到一个或多个窗口。

语法

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

参数

[in] hWnd

类型:HWND

窗口的句柄,其窗口过程将接收消息。

如果此参数 HWND_BROADCAST ( (HWND) 0xffff) ,则会将消息发送到系统中的所有顶级窗口,包括禁用或不可见的无所有者窗口。 直到每个窗口超时后,函数才会返回。因此,总等待时间可能最多为 uTimeout 的值乘以顶级窗口数。

[in] Msg

类型: UINT

要发送的消息。

有关系统提供的消息的列表,请参阅 系统定义的消息

[in] wParam

类型:WPARAM

任何其他特定于消息的信息。

[in] lParam

类型:LPARAM

任何其他特定于消息的信息。

[in] fuFlags

类型: UINT

此函数的行为。 此参数可使用以下一个或多个值。

含义
SMTO_ABORTIFHUNG
0x0002
如果接收线程似乎没有响应或“挂起”,函数将返回而不等待超时期限过。
SMTO_BLOCK
0x0001
在函数返回之前,阻止调用线程处理任何其他请求。
SMTO_NORMAL
0x0000
在等待函数返回时,不会阻止调用线程处理其他请求。
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
只要接收线程正在处理消息,函数就不会强制实施超时期限。
SMTO_ERRORONEXIT
0x0020
如果在处理消息时,接收窗口被销毁或其拥有的线程死亡,则函数应返回 0。

[in] uTimeout

类型: UINT

超时期限的持续时间(以毫秒为单位)。 如果消息是广播消息,则每个窗口都可以使用完整的超时期限。 例如,如果指定 5 秒超时期限,并且有 3 个顶级窗口无法处理消息,则最多可能会有 15 秒的延迟。

[out, optional] lpdwResult

类型: PDWORD_PTR

消息处理的结果。 此参数的值取决于指定的消息。

返回值

类型: LRESULT

如果该函数成功,则返回值为非零值。 如果使用HWND_BROADCASTSendMessageTimeout 不会提供有关单个窗口超时的信息。

如果函数失败或超时,则返回值为 0。 要获得更多的错误信息,请调用 GetLastError。 如果 GetLastError 返回 ERROR_TIMEOUT,则函数超时。

Windows 2000: 如果 GetLastError 返回 0,则函数超时。

注解

函数为指定窗口调用窗口过程,如果指定的窗口属于其他线程,则在窗口过程处理消息或指定的超时期限已过之前不会返回 。 如果接收消息的窗口与当前线程属于同一队列,则直接调用窗口过程 - 超时值将被忽略。

此函数认为线程在五秒内未调用 GetMessage 或类似函数时没有响应。

系统仅对系统消息执行封送处理, (范围为 0 到 (WM_USER-1) ) 。 若要将其他消息 (那些 >= WM_USER) 发送到另一个进程,必须执行自定义封送处理。

注意

winuser.h 标头将 SendMessageTimeout 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 在 Windows 8) 中引入的 ext-ms-win-ntuser-message-l1-1-0 (

请参阅

概念性

GetMessage

InSendMessage

消息和消息队列

PostMessage

引用

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage