AN>Судя по задаче, это нужно для автоматического тестирования GUI. AN>ИМХО времени надо побольше. Нужно парсить файл настроек, в котором будет задано, в какое окно и что писать. Потом найти нужное окно.
Поиск окна тривиален, но если оно нативное. А вот если оно какое-то кроссплатформенное, то начинаются бубны. Я имею ввиду, дочернее окно (контрол). Какой-нить ГуглоХром именно такой. Ну не получится у него вытащить HWND дочернего контрола. Ибо его нет. Это его — гуглохрома — начинки и он там сам рулит. Для винды оно не-окно.
Например: имеем мы HWND какого-то верхнего уровня того же гуглохрома, хотим пошариться по дочерним элементам (контролам). Дык вот всякие там стандартные WinAPI вроде GetWindow(GW_CHILD) и прочия, ответят "а нету-ти, ну ничего дочернего нету-ти". В этом смысле эти самые контролы для винды не-окна.
AN>Затем сменить раскладку,
Это как раз таки просто. Пляски начинаются когда там языков два(Икс), а раскладок больше (Икс+игрек). Например, аглицкий язык + раскладка США, аглицкий язык + раскладка Великобритании, ну и до кучи русский язык + к нему две раскладки стандартная и qwerty.
AN>конвертировать из UTF-8 в локаль или UTF-16 (в зависимости от того Unicode или нет приложение) и послать WM_CHAR (если бы не нужно было обрабатывать BackSpace, то можно было WM_SETTEXT использовать). Но я очень давно на WinAPI не писал, возможно, есть способ проще. AN>Затем — всё это протестировать и на это времени уйдёт немало.
Не стоит баловаться с WM_TEXT,WM_CHAR и прочия. Если уровень привилегий отсылающего приложения меньше, то фига с два винда разрешит такому приложению стучать сообщениями в конечное приложение, у которого уровень привилегий выше.
В общем там есть пути. Но есть и масса нюансов. И довести код до идеала весьма непросто. Наковырялся я с этим…
Это я всё к тому, что да — "на полчаса задачка". Но вот чтобы довести это до продакшена, чтобы работало стабильно и везде, вот эти тонкости там весьма неслабые.