函数功能:
SendMessageTimeout 函数发送指定消息给一个或多个窗口。
SendMessageTimeout 函数具备超时限制的功能。
API 函数原型:
LRESULT WINAPI SendMessageTimeout( _In_ HWND hWnd, _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, _In_ UINT fuFlags, _In_ UINT uTimeout, _Out_opt_ PDWORD_PTR lpdwResult );
参数解析:
|
参数 |
含义 |
||||||||||||
|
hWnd |
1. 指定接收消息的窗口句柄 |
||||||||||||
|
Msg |
1. 指定将被发送的消息 |
||||||||||||
|
wParam |
消息的附加信息 |
||||||||||||
|
lParam |
消息的附加信息 |
||||||||||||
|
fuFlags |
指定该函数的行为,该参数可以是以下一个或多个值的组合:
|
||||||||||||
|
uTimeout |
1. 指定超时周期,单位是毫秒 |
||||||||||||
|
lpdwResult |
消息的处理结果 |
返回值:
1. 如果函数调用成功,返回值是非 0(如果使用 HWND_BROADCAST,SendMessageTimeout 函数不提供单个窗口的超时周期信息);
2. 如果函数调用失败或超时,返回值是 0(调用 GetLastError 函数的返回值是 ERROR_TIMEOUT,则说明是函数超时)。
备注:
1. 函数调用指定窗口的窗口过程,如果指定的窗口属于不同线程,函数在窗口过程处理完消息或等待超时周期结束时返回;如果接收消息的窗口和当前线程属于同一队列,那么直接调用窗口过程并忽略超时限制。
2. 如果接收消息的线程在 5 秒内没有调用 GetMessage 函数或其他类似函数,则该函数认为其没响应。
3. 系统只对系统级的消息(0 ~ WM_USER-1)进行封送处理。发送自定义消息(>= WM_USER)到另一个进程,你需要自己对消息进行封送处理。




