Информация об изменениях

Сообщение Re[2]: Что не так с фрилансерами? от 10.11.2017 7:54

Изменено 10.11.2017 7:56 Carc

Re[2]: Что не так с фрилансерами?
Здравствуйте, AleksandrN, Вы писали:


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 и прочия. Если уровень привилегий отсылающего приложения меньше, то фига с два винда разрешит такому приложению стучать сообщениями в конечное приложение, у которого уровень привилегий выше.

В общем там есть пути. Но есть и масса нюансов. И довести код до идеала весьма непросто. Наковырялся я с этим…

Это я всё к тому, что да — "на полчаса задачка". Но вот чтобы довести это до продакшена, чтобы работало стабильно и везде, вот эти тонкости там весьма неслабые.
Re[2]: Что не так с фрилансерами?
Здравствуйте, AleksandrN, Вы писали:


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 и прочия. Если уровень привилегий отсылающего приложения меньше, то фига с два винда разрешит такому приложению стучать сообщениями в конечное приложение, у которого уровень привилегий выше.

В общем там есть пути. Но есть и масса нюансов. И довести код до идеала весьма непросто. Наковырялся я с этим…

Это я всё к тому, что да — "на полчаса задачка". Но вот чтобы довести это до продакшена, чтобы работало стабильно и везде, вот эти тонкости там весьма неслабые.