|
|
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
Добрый день! Помогите с решением такой задачи, плз. Для справки - платформа C++ Builder 5. Итак, необходимо написать программу, которая будет управлять работой другой программы, по таймеру. Управлять, это значит кликать мышкой в определенные участки (меню, кнопки), и заполнять текстом определенные поля (TEdit, ...). У меня есть дескриптор управляемой программы. Выполнение SendMessage() для WM_KEYDOWN, WM_KEYUP, WM_CHAR, WM_LBUTTONDOWN, WM_LBUTTONUP желаемого результата неприносит - текст не вводиться, менюшки не открываются. Наверняка существует отработанная технология решения этой задачи. Подскажите кто знает, - неохото проходить по всем граблям, - а их здесь, судя по всему, немало. :) Заранее благодарен. Евгений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 11:37 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
Что за программой надо управлять если не секрет? Может есть более простые способы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 11:45 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
Вообще их несколько, но одна из них - внутренняя, давнишняя разработка, для сбора и обработки статистики (исходники утрачены). Требуется ежедневно на выделенном компе выполнять последовательно ряд однообразных манипуляций (отнимает ужасно много времени и нервов). Каждая следующая по завершению предыдущей. Примерное время выполнения каждого этапа известно. Если коротенько - то вот предистория. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 11:53 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
Есть две утилиты ScriptIt и AutoIt. Как раз для автоматизации действий с окошками. Привожу ссылку из книги. http://www.hiddensoft.com/autoit P.S. Не все приложения поддерживают автоматизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 12:05 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
Меню и кнопки посылают сообщение WM_COMMAND. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 13:54 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
Я писал такое на Rational Robot, для тестирования. Можете посмотреть, на сей продукт, очень неплох. А вообще такие роботы популярны в Q/A, спросите в том форуме "The CBO without stats is like a morning without coffee." T.Kyte ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 14:48 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
maytonЕсть две утилиты ScriptIt и AutoIt. Как раз для автоматизации действий с окошками. В моем случае, ежедневные действия аналогичны, но не идентичны, т.е. они могут варьироваться в зависимовсти от исходных данных. Например в один день нужно выбрать третий пункт меню, в другой день - четвертый. Информация вводимая в одни и теже поля так же отличается день ото дня. maytonP.S. Не все приложения поддерживают автоматизацию. А есть ли способ, сказать системе - "Установи курсор мышки в X,Y", "Сделай левый клик", "Ввод с клавиатуры 'Hello world' ". А система пусть сама разруливает какому приложению отдать фокус и в какое поле чего ввести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 02:28 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
MLeonМеню и кнопки посылают сообщение WM_COMMAND. Можно еще несколько слов в этом направлении, а еще лучше несколько ссылочек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 03:11 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
У меня есть подобная прога (могу дать исходники) Я делал её чтоб каждый раз форму не заполнять. Но она не работает по расписанию. Текст в едитах заполняться через SetWindowText не будет. По-моему, дело в том, как под едитбоксы приложение выделяет память. WM_CHAR работает всегда :) Сщас прога заполняет едиты, ставит чеки, выбирает комбы(и оповещает окно о выборе, потому как на это окна реагируют обычно), жмёт кнопки. И всё делается "живыми" сообщениями. То есть кнопкам посылаются мышиные сообщения, а не окну WM_COMMAND. Это тоже даёт возможность окну прореагировать. Так как если мышью выбрать чек, то окно отреагирует на WM_COMMAND, а если поставть BS_CHECKED - нет(тут ещё и проверку делать надо, чекед\анчекед). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 07:52 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
SiebentearbeitУ меня есть подобная прога (могу дать исходники) Я делал её чтоб каждый раз форму не заполнять. Но она не работает по расписанию. Текст в едитах заполняться через SetWindowText не будет. По-моему, дело в том, как под едитбоксы приложение выделяет память. WM_CHAR работает всегда :) Сщас прога заполняет едиты, ставит чеки, выбирает комбы(и оповещает окно о выборе, потому как на это окна реагируют обычно), жмёт кнопки. И всё делается "живыми" сообщениями. То есть кнопкам посылаются мышиные сообщения, а не окну WM_COMMAND. Это тоже даёт возможность окну прореагировать. Так как если мышью выбрать чек, то окно отреагирует на WM_COMMAND, а если поставть BS_CHECKED - нет(тут ещё и проверку делать надо, чекед\анчекед). За исходники буду очень признателен - вот мой адрес "sagittar@pochta.ru". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 08:47 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
archez В моем случае, ежедневные действия аналогичны, но не идентичны, т.е. они могут варьироваться в зависимовсти от исходных данных. Например в один день нужно выбрать третий пункт меню, в другой день - четвертый. Информация вводимая в одни и теже поля так же отличается день ото дня. AutoIt поддерживает сценарии. ИМХО можно каким-то образом программировать действия с окнами в зависимости от исходных данных. Сам я это не пробовал но думаю что можно. Если получится обязательно напиши в форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 10:55 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
mayton AutoIt поддерживает сценарии. ИМХО можно каким-то образом программировать действия с окнами в зависимости от исходных данных. Сам я это не пробовал но думаю что можно. Если получится обязательно напиши в форум. Не хотелось бы усложнять методику, добавляя промежуточное приложение. Хочется все же реализовать непосредственное управление приложением. Если уж совсем никак получаться не будет, то придется маневрировать. AutoIt - оставлю на крайний случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 02:25 |
|
||
|
... вкалывают роботы, а не человек!
|
|||
|---|---|---|---|
|
#18+
А вот скажите, почему, не срабатывает такой код (ОС - Win2000): HWND hEdit = FindWindowEx(hHandle, NULL, "Edit", NULL); я получаю NULL, вместо дескриптора дочернего окна типа "Edit" Причем хэндл родительского окошка правильный - потому что такой код срабатывает, при условии что в родительском окне всего одно дочернее: HWND hEdit = FindWindowEx(hHandle, NULL, NULL, NULL); я получаю нужный хэндл, и могу забить нужный текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 04:10 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32927407&tid=2033688]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 472ms |

| 0 / 0 |
