如何得知用户切换到了其他程序,也就是说当前程序失去了焦点?

top_abrams 2003-10-16 10:00:27
多谢。
...全文
33 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
AresChen 2003-10-16
  • 打赏
  • 举报
回复
如果我没记错的话,Windows应该是有相应的消息,但建议不要往这方面去想,因为,这意味你要在VB中使用消息循环或者Hook,这两个东西我个人觉得都是很危险的,没有必要还少碰的好。而且,Windows的消息经过VB外壳后,很多消息都发生了变化,并不保证能够获得正确的消息。
有一个思路,你可以试一下:
有个API是获得当前活动的窗口的hWnd,你可以用定时器每隔一段时间(比如0.1秒,一般人是感觉不出来的),去检查一下该hWnd和你的Form的hWnd是否一致,不一致则代表失去焦点了。
需要主要的是:
1. 当当前窗口弹出了窗口之后,避免错误的判断;
2. Timer控件Timer事件中的写法。如果要在Timer事件中处理很长的一段事情(比如读写数据库,或者等待用户操作),首先要记得一进入Timer事件就先把Timer给Disable掉,否则很容易发生重复的进入Timer事件。

应该会有更好的办法吧?我想,但还是不建议Hook的方式,移植性也差。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧