Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Открытие меню, нажатия кнопок, перепечатывания


Автор: Addmin 14.12.2008, 08:48
Здравствуйте!

Возникла такая проблема: необходимо автоматизировать некоторый процесс в другом приложении (VBA там нет). Мне нужно нажимать элементы менюшек, вводить текст в edit'ы, тыкать на кнопочки... Запись определённых действий мышки и клавиатуры также не подходит. 

Так как мне её решить? Как я понимаю, нужно находить указатели на элементы, но чем? Потом отсылать в форму сообщение, но как? За каждую крупицу информации я буду крайне признателен smile

Заранее спасибо!

Автор: Rrader 14.12.2008, 08:54
Addmin, нужно больше информации. А так, навскидку:

1) Меню стандартное обычное? Тогда управляется через WM_COMMAND
2) Кнопочки - BM_CLICK, WM_LBUTTONDOWN
3) Эдиты - WM_SETTEXT

Поиск окон - FindWindow(Ex), GetWindow, EnumChildWindows и т.д.

Автор: Addmin 14.12.2008, 09:02
Rrader, какая нужна информация? Готов предоставить что угодно smile Вообщем, суть проста: я открыл программу, выбрал в меню (да, стандартном) элемент "Open...", потом - элемент "Do'with'file", заполнил пару Edit'ов, щёлкнул кнопку и сохранил.

Автор: Rrader 14.12.2008, 09:26
Если меню стандартное, то покажу, как в нем итемы нажимать, на примере своего меню.

1) Кидаем на форму TMainMenu;
2) Добавляем в меню итемы, прописываем им обработчики для проверки, нажалось ли smile 
3) Скачиваем программу http://kickme.to/inqsoft, если таковой не имеется;
4) Выбираем окно приложения в сканере;
5) Нажимаем в сканере кнопку "Меню";
6) Появится дерево итемов - ищем нужный, при этом внизу будет отображаться его ItemID;
7) Теперь, зная ItemID, можно по нему программно нажать:
Код

SendNotifyMessage(Form1.Handle, WM_COMMAND, ItemID, 0);

Здесь ItemID - тот идентификатор, полученный из сканера.

Эти действия можно выполнять и для чужого приложения. Нужно посылать сообщение окну, которому меню принадлежит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)