SendMessage 中的 ERROR_FILE_NOT_FOUND 意味着什么?
SendMessage 返回 0,GetLastError 返回 2 (ERROR_FILE_NOT_FOUND
)。 ERROR_ACCESS_DENIED
有记录,但没有记录。有人知道这意味着什么吗?
SendMessage returning 0 and GetLastError returning 2 (ERROR_FILE_NOT_FOUND
). ERROR_ACCESS_DENIED
is documented but not this. Anyone have any idea what this means?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SendMessage 返回 0 并不表示也不可能表示失败。 SendMessage 仅返回 WindowProc 返回的值,该值通常为 0。无法判断 - 仅通过 SendMessage 的返回 - SendMessage 是否无法传递消息(可能是因为窗口无效或属于更高完整性级别的进程) )。
如果消息被记录为返回 0 以外的内容,那么,再次根据消息,查看 GetLastError() 来了解消息处理失败的原因可能是有效的。
此外,没有任何操作系统函数会清除最后一个错误代码,因此 GetLastError() 中的任何值都可能完全是偶然的。调用 API 然后调用 GetLastError() 可能意味着之前的 API 调用中发生了错误,或者内部调用的 API 执行了某些“失败”的操作,但已得到处理并且 API 本身成功。
SendMessage returning 0 does not, and cannot, indicate failure. SendMessage just returns the value returned by the WindowProc which is frequently 0. There is no way to tell - just via the return from SendMessage - if SendMessage could not deliver the message (perhaps because the window is invalid or belongs to a higher integrity level process).
If the message is documented as returning something other than 0, then, again depending on the message, it might be valid to look at GetLastError() to see why the message processing failed.
Also, no OS functions ever clear the last error code, so any value in GetLastError() can be entirely incidental. Calling an API and then calling GetLastError() might mean the error happened in a previous API call, OR that the API called internally did some operation that 'failed' but was handled and the API itself succeeded.