c# - C# 中的 Windows 10 语言更改弹出菜单焦点问题
问题描述
我有一个 C# 类,负责在全球范围内监控焦点变化。
它通过SetWinEventHook
with工作EVENT_SYSTEM_FOREGROUND
。有关详细信息,请参阅此问题。
一切都很好,但有一个奇怪的问题......
当您通过Alt+Shift
一个小菜单在 Windows 10 上更改语言时,会弹出一个您可以从中选择的系统上启用的语言。
好吧,你猜怎么着,那个东西也发送了一个焦点改变事件......
奇怪的部分是 - 在语言改变之前有焦点的过程有点......不会失去它吗?因为在该弹出菜单消失后,您不会获得焦点窗口的焦点更改事件。
例如,我在 Notepad++ 中输入文本(notepad++
进程名称)并且我的程序注册了,当我通过Alt+Shift
那个小弹出菜单更改语言时发送焦点事件(explorer
进程名称)并且在消失时 Notepad++ 不发送焦点事件!
即使我之后在记事本++中做某事,我也不会得到它的焦点事件......
只有关注其他窗口(不是 Notepad++)才会发送焦点更改事件。
我该如何克服这个问题?
请记住,我仍然对explorer
过程感兴趣,因为文件资源管理器具有该名称。所以,我不能忽略所有的进程explorer
PS我也用过这种全局焦点监控的方式,但是做的事情是一样的。
解决方案
推荐阅读
- lotusscript - 如何在只有定义OU的人的lotusscript中创建视图
- formatting - FAB_DIS 格式样本数据
- java - Spring Boot 应用程序运行失败,即使回滚到最后一次成功的构建提交
- python - 如何从外部工作人员将芹菜任务结果添加到 django 的数据库
- sql - 在谷歌表中选择 DISTINCT 总和
- typescript - 从 chrome devtools 中的 Vue typescript 组件源名称中删除“vue&type=script&lang=ts&”
- c# - c# - 通用字典键、值继承问题
- google-sheets - 如何为谷歌表格 condionaiol 格式编写脚本?/ 保持 CFormatting 范围锁定
- kubernetes - 如何用kubectl和postgresql的图表创建角色和数据库?
- excel - 如何根据EXCEL中主要客户ID的值查找所有行