Область уведомлений Windows 10, индикатор ввода заставляет область уведомлений «прыгать»

Область уведомлений Windows 10, индикатор ввода заставляет область уведомлений «прыгать»

Я печатаю на английском и китайском языках, использую Pinyinметод ввода, встроенный в Windows 10. Когда я сейчас печатаю, в области уведомлений появляются 2 значка, указывающие на мой текущий метод ввода:
введите описание изображения здесь

Значок рядом со значком Wi-Fi говорит, что я печатаю на английском языке. Значок справа говорит, что я использую Pinyinметод ввода.

Когда активны определенные окна (я предполагаю, когда эти окна не позволяют вводить данные?), эти 2 значка не будут там в области уведомлений. Теперь, когда я пытаюсь нажать на что-то (например, значок Wi-Fi) в области уведомлений, эти 2 значка внезапно появляются и сдвигают значок, который я хотел нажать, влево. В результате мой щелчок не будет иметь никакого эффекта, мне нужно будет переместить курсор влево и щелкнуть снова.

Единственный пример, который я могу сейчас найти, это когда я работаю в сеансе RDP с использованием mremoteng. Но поскольку я много работаю в сеансах RDP, я нахожу это довольно раздражающим.

Поэтому мне просто интересно, смогу ли я это исправить.

ВотвидеоЯ только что записал.

Извините, я думал, что достаточно ясно изложил свой вопрос, но, похоже, нет. Итак, вот они:

  • почему input indicatorполностью исчезает в определенных ситуациях? В моем случае ситуация такова, когда я нахожусь в сеансе RDP вmremoteng
  • И почему он внезапно появляется, когда я пытаюсь нажать на любой значок в области уведомлений, заставляя все остальные значки менять положение?

решение1

Индикаторы ввода появляются, потому что, щелкнув за пределами блокнота, вы изменили метод ввода с простого английского на сложный.

Порядок значков в области уведомлений можно изменить, перетащив значок на новое место и отпустив его. Однако это может не сработать для этих индикаторов, поскольку они, похоже, размещены в том же месте, где обычно находится языковая панель.

Я думаю, есть две возможности:

  • Как вы указали, замените эти индикаторы на языковую панель, размещение которой статично.
  • Установите языковую панель в положение «плавающее», что может (или не может) оказать то же самое влияние на эти индикаторы (я не могу проверить, так как у меня нет подходящей среды).

решение2

Действительно, это раздражающая функция RDP-клиента. То же самое и в Windows XP. К сожалению, я не нашел настройки, чтобы отключить ее, но мне все же удалось отключить ее для моей установки (и XP, и Windows 10).

Клиент TS получает экземпляр интерфейса ITfLangBarMgr и при получении фокуса вызывает метод ITfLangBarMgr.ShowFloating, который скрывает индикатор локали ввода. Затем при потере фокуса он его восстанавливает.

Один из способов отключить "функцию" - отфильтровать сообщение WM_SETFOCUS, идущее в окно. Это несколько сложнее.

Я пропатчил mstscax.dll. Используя шестнадцатеричный редактор, я нашел GUID интерфейса ITfLangBarMgr, который равен 87955690-e627-11d2-8ddb-00105a2799b5. Я нашел (шестнадцатеричное) 90 56 95 87. Затем изменил один бит — изменил 90 на 91. Это привело к тому, что клиент TS не смог инициировать экземпляр интерфейса менеджера языковой панели и больше не вызывал метод ShowFloating.

Связанный контент