Касается смены раскладки.
С помощью AutoHotkey раскладку я меняю, посылая сообщение «изменить язык ввода на...». Обычно это не действует в диалоговых окнах. Решил выяснить, почему. Оказывается, сообщение они получают, хотя и не реагируют на него нужным образом. Зато при нажатии Ctrl+Shift уничтожается и создаётся окно класса msctfime ui. Из гугла я понял, что это относится к ime — методу ввода, но не уяснил всю механику. Можете рассказать человеческим языком?