На самом деле переключение раскладки - это не так просто, как кажется. Пример - браузер (например тот-же FF), форма запроса пароля. Положим, пароль пользователя "Nht[dtlthyfzRkbpmvf" - что будет, если переключалка не поймет, что ввод производится в поле для ввода пароля WEB-формы браузера X ?! (можно попробовать - поставить Punto и ввести указанное в блокнот). А будет простая штука - фолса. Пароль не подойдет, после N попыток учетку заблокируют, пользоватль обидится на создателей Punto и выкинет его нафиг. именно по этому в теории должен быть детект популярных браузеров, исключения (по заголовку окна и по приложению как минимум, дабы например детектить окна ввода пароля и не переключать в них ничего). В данном примере если посмотреть на код DLL - она проста до безобразия, там:
Если в реестре задан параметр PasswordDetect !=0 в ключе HKEY_CURRENT_USER\Software\Yandex\Punto Switcher\3.1\PSHook32, то Если имя исполняемого файла без учета регистра оканичивается на "\firefox.exe" или "\iexplore.exe", то { перехватить в Kernel32.dll ряд функций (LoadLibrary,LoadLibraryEx, GetProcAddress) перехватить функцию ExtTextOutW в GDI32.DLL}
По умолчанию этого параметра нет (по крайней мере у меня на полигоне после инсталла), и поэтому код, сравнивающий имя процесса с указанными именами процессов браузеров попросту никогда не получает управление, и хуки не устанавливаются ...
PS: настройки обновлятора казываеттся вся в реесре - HKEY_CURRENT_USER\Software\Yandex\Yupdate-BITS-CM\Applications\punto