这是关于 Windows 编程的一个普遍问题:
窗口消息“可靠”吗?
例如(这些只是示例):
你能确定在光标进入你的屏幕之前
WM_MOUSEMOVE
会发生吗?如果插入设备,您能确定会收到消息吗?
WM_DEVICECHANGE
如果你的窗口失去焦点,你能确定你会收到一条消息吗?
WM_KILLFOCUS
或者,换句话说:您能否确定您会在适当的时间收到适当的消息,或者您是否总是必须进行防御性编码,以防万一您可能因为没有明显记录的原因而错过消息?
例子:
保证(AFAIK)文件系统过滤器驱动程序不会“错过”文件操作或更改通知。
相反,不能保证ReadDirectoryChangesW不会错过通知。事实上,如果它的缓冲区溢出,它可能会错过很多。
笔记:
我不是在谈论针对对手的情况(例如,有人劫持了您的窗口程序或安装了钩子/过滤器);这几乎会使任何保证无效。我只是在询问即使没有人故意表示任何不好的事情也可能真正发生的晦涩情况,例如某些随机缓冲区溢出,如果有人使用SendInput
等等,假设您可以控制自己的代码。