加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 窗口消息“可靠”吗?

发布时间:2020-12-14 02:51:52 所属栏目:Windows 来源:网络整理
导读:这有点是关于 Windows编程的一般问题: Window消息“可靠”吗? 例如(这些只是示例): 你能确定在光标进入屏幕之前会发生WM_MOUSEMOVE吗? 如果插入设备,您能否确定会收到WM_DEVICECHANGE消息? 如果您的窗口失去焦点,您能否确定收到WM_KILLFOCUS消息? 或者
这有点是关于 Windows编程的一般问题:

Window消息“可靠”吗?

例如(这些只是示例):

>你能确定在光标进入屏幕之前会发生WM_MOUSEMOVE吗?
>如果插入设备,您能否确定会收到WM_DEVICECHANGE消息?
>如果您的窗口失去焦点,您能否确定收到WM_KILLFOCUS消息?

或者,换句话说:你能否确定你会在适当的时候得到适当的信息,或者你是否总是必须采取防御性的方式进行编码,以防某些情况下你可能因为没有明显记录的原因而错过了一条信息?

例:

>保证(AFAIK)文件系统过滤器驱动程序不会“错过”文件操作或更改通知.
>相比之下,不保证ReadDirectoryChangesW不会错过通知.事实上,如果缓冲区溢出,它可能会错过很多.

注意:

我不是在谈论针对对手的情况(例如有人劫持你的窗口程序或安装钩子/过滤器);这几乎会使任何保证无效.我只是询问可能真的发生的模糊情况,即使没有人故意表达任何坏事,比如一些随机缓冲区溢出,如果有人使用SendInput等,假设您已经控制了自己的代码.

解决方法

不,您不能确定给定的消息将按特定顺序传递.以下是几个原因

>可以以信息方式发送消息,这可以用于模拟“不可能”的场景,例如WM_KEYUP后跟WM_KEYDOWN.
>另一个例程可以对您的窗口进行子类化,并有选择地拦截消息,而不是将它们发送到您的WNDPROC

最好在任何排序很重要的场景下进行防御性编码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读