WPF没有原生的托盘图标,用Winform的NotifyIcon无法取得焦点丢失事件,点其他窗口后菜单还硬生生的显示在原地,非常的尴尬
准备拔一下 HandyControl 的实现,发现代码有点多,有点迷惑
在具体的链接内实现是计时器+鼠标位置的各种判断,我没有细看里面为啥要用鼠标位置
https://www.cnblogs.com/sczmzx/p/5158127.html
自己利用Winform的NotifyIcon+计时器简单包装了一个
- MouseDown托盘右键,立马启动计时器,检测当前窗口句柄,只要句柄发生变化说明丢失了焦点,则关闭菜单
- 菜单注册关闭事件,在关闭前停止计时器
关键代码就这一句
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();