Windows 10 通知区域,输入指示器使通知区域“跳跃”

Windows 10 通知区域,输入指示器使通知区域“跳跃”

我输入英文和中文,我使用PinyinWindows 10 内置的输入法。当我现在输入这些内容时,通知区域中有两个图标指示我当前的输入法:
在此处输入图片描述

Wi-Fi 图标旁边的图标显示我正在用英文输入。其右侧的图标显示我正在使用Pinyin输入法。

当某些窗口处于活动状态时(我猜是这些窗口不允许输入?),这两个图标不会出现在通知区域中。现在,当我尝试单击通知区域中的某个东西(例如 Wi-Fi 图标)时,这两个图标会突然出现,它们会将我想要单击的图标推到左侧。结果,我的点击不会产生任何效果,我需要相应地将光标向左移动并再次单击。

我现在能找到的唯一示例是当我使用 进行 RDP 会话时mremoteng。但由于我经常在 RDP 会话上工作,因此我发现它非常烦人。

所以我只是想知道我是否可以解决这个问题。

这是一个视频我刚才录了下来。

抱歉,我以为我已经把问题说清楚了,但似乎没有。所以它们如下:

  • 为什么input indicator在某些情况下会完全消失?就我而言,这种情况是当我在 RDP 会话中mremoteng
  • 为什么当我尝试单击通知区域中的任何图标时它会突然出现,导致所有其他图标改变位置?

答案1

输入指示器的出现是因为通过单击记事本外部,您已将输入法从简单英语更改为复杂英语。

可以通过将图标拖到新位置并释放来更改通知区域中图标的顺序。但是,这可能不适用于这些指示器,因为它们似乎位于语言栏通常所在的同一位置。

我认为有两种可能性:

  • 正如您所指出的,用语言栏替换这些指示器,语言栏的位置是静态的
  • 将语言栏设置为浮动,这可能会(或可能不会)对这些指标产生相同的效果(我无法测试,没有正确的环境)。

答案2

确实,这是一个令人讨厌的 RDP 客户端功能。Windows XP 上也是如此。不幸的是,我没有找到禁用它的设置,但我还是设法为我的设置禁用了它(XP 和 Windows 10)。

TS 客户端获取 ITfLangBarMgr 接口实例,当获得焦点时,它会调用 ITfLangBarMgr.ShowFloating 方法隐藏输入语言环境指示器。然后在失去焦点时恢复它。

禁用该“功能”的一种方法是过滤发送到窗口的 WM_SETFOCUS 消息。这有点复杂。

我所做的是修补 mstscax.dll。使用十六进制编辑器,我搜索了 ITfLangBarMgr 接口 GUID,即 87955690-e627-11d2-8ddb-00105a2799b5。我搜索了 (hex) 90 56 95 87。然后更改了一个位 - 将 90 更改为 91。这导致 TS 客户端无法启动语言栏管理器接口的实例,并且不再调用 ShowFloating 方法。

相关内容