窗口消息“可靠”吗?

时间:2011-05-24 17:36:39

标签: windows winapi window-messages

这是关于Windows编程的一般问题:

Window消息是否“可靠”?

对于示例(这些只是示例):

  • 你可以某些在光标进入你的屏幕之前会发生WM_MOUSEMOVE吗?

  • 您是否某些如果插入设备,您会收到WM_DEVICECHANGE消息?

  • 如果您的窗口失去焦点,您能某些您会收到WM_KILLFOCUS消息吗?

或者,换句话说:你能某些你能在适当的时候得到适当的信息吗,或者你总是要防御性地编码,以防以某种方式< / em>,你可能会错过一条没有明显记录原因的消息吗?


实施例

  • 保证(AFAIK)文件系统过滤器驱动程序不会“错过”文件操作或更改通知。

  • 相比之下, 确保ReadDirectoryChangesW不会错过通知。事实上,如果缓冲区溢出,它可能会错过很多。

注意:

谈论对手的情况(例如有人劫持你的窗口程序或安装钩子/过滤器);这几乎会使任何保证无效。我只是询问可能真的发生的模糊情况,即使没有人意味着任何有意义的错误,例如一些随机缓冲区溢出,如果有人使用SendInput等等,假设你有自己的控制权代码

1 个答案:

答案 0 :(得分:3)

不,您不能确定某个特定邮件是按特定顺序发送的。以下是

的几个原因
  • 可以通过代理方式发送消息,这可以用于模拟“{不可能”的方案,例如WM_KEYUP后跟WM_KEYDOWN
  • 另一个例程可以对您的窗口进行子类化并有选择地拦截消息,而不是将其发送到您的WNDPROC

最好围绕任何重要排序的场景进行防御性编码