【发布时间】:2019-05-02 06:02:19
【问题描述】:
是否可以确定 SendMessage() 调用是否成功并将我的消息传递到目标窗口?
Windows API 中的 SendMessage() 描述对此似乎很安静,只说以下内容:
返回值指定消息处理的结果;这取决于发送的消息。
这显然是指返回码反映了目标窗口的wndproc返回的值。
但是,如果消息根本没有传递(例如,由于访问控制,或者由于窗口在此期间被破坏),返回码会是什么?我怎样才能检测到这种情况?
【问题讨论】:
-
取决于消息。你能回复一下吗?
-
这是我自己的代码的 WM_USER 消息,所以我在这里可以完全控制。一个简单的响应(如 wndproc 返回 TRUE)是不行的,因为如果传递失败,SendMessage() 的返回值似乎是未定义的。因此,似乎无法保证 SendMessage() 在这种情况下不会返回 TRUE。
-
我的意思是让另一个应用程序
SendMessage回来。 -
SendMessage有一个返回值,不能用来可靠地区分成功和失败。另一方面,SendMessageTimeout 会返回成功/错误指示符以及消息处理的结果。 -
SMTO_NOTIMEOUTIFNOTHUNG: “只要接收线程正在处理消息,该函数就不会强制超时。”
标签: winapi