Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
1

Управлять другим приложением

03.08.2014, 21:11. Просмотров 3232. Ответов 23
Метки нет (Все метки)

условие в моем приложении две кнопки "старт" и "стоп" при нажатие кнопки старт должно запуститься в фоновом(невидимым) режиме другое приложение там открыться текстовый файл и нажаться там одна кнопка! при нажатие кнопки стоп в моем приложении там должна на жаться только одна кнопка !
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2014, 21:11
Ответы с готовыми решениями:

Мониторинг файла, создаваемого другим приложением
Приветствую! А подскажите, пожалуйста, кто-нибудь!? Есть программка (основная). При ее работе,...

Как очистить файл, который используется другим приложением?
Подскажите, как очистить файл который используется каким-то приложением?

Как управлять другим приложением?
Из своего кода я запускаю другое приложение (кода нет). В окне этого приложения есть элемент вида...

Бинарный файл, созданный одним приложением, не читается другим приложением
Добрый день. Проблема: Первое приложение создает List<MyClass> и сериализует в бинарный файл....

Значение, возвращаемое приложением должно быть "увидено" другим приложением
Всем привет. Подскажите пожалуйста, как после определённого события, к примеру, при нажатии на...

23
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 01:51 2
Delphi
1
2
3
4
5
6
7
8
var
wnd:THandle;
 
wnd:=FindWindow(nil,'название окна твоей программы'); // ищем окно по названию
wnd:=FindWindowEx(wnd,nil,'Старт'); // ищем кнопку по названию 
ShowMessage(IntToStr(wnd)); // проверяем найдена ли кнопка? Здесь должно выскочить сообщение, с чем угодно, кроме нуля (нуль - значит кнопка не найдена) 
SendMessage(wnd,WM_LBUTTONDOWN,0,0); // жмем кнопку
SendMEssage(wnd,WM_LBUTTONUP,0,0); //отпускаем кнопку
0
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 01:57  [ТС] 3
вот и я начал копать туда ....
сейчас могу только открыть программу и послать туда символ )))
вот при помощи этого sendmessage(h,WM_CHAR,ord('A'),0);
а как туда послать чтоб меню тыкалось ?????
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 01:58 4
Все точно также, только ищешь хэндл меню и жмешь, как я описал выше.
0
04.08.2014, 01:58
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 02:18  [ТС] 5
а как его определить этот хэндл ? меню ? какой он

Добавлено через 7 минут
вопрос даже так поставлю, как определить название кнопки если на ней тупо картинка ! ??
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 02:18 6
Через Spy++ смотришь класс, и ищешь его хэндл с помощью FindWindowEx.

Скорее всего тебе еще рано нажимать кнопки в чужом приложении... Начни с чего-нибудь попроще.. Книги там почитай про Delphi...
0
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 02:39  [ТС] 7
я не могу отвлекаться от основной задачи ... я не просто так, срочно по работе мне надо)
пониамю надо изучать с озов но на это уйдет куча времени ...
а так по тихоньку я все равно разбиваю поставленную задачу с помощью конечно вас гуру )

про spy++ тоже слышал но где его достать где скачать ? я его просто не нашел ...

Добавлено через 3 минуты
НАШЕЛ !!! установил пытаюсь разобрать как найти класс .... ?
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 02:45 8
В гугл написал "Spy++ скачать" и по первой же ссылке выдало. )

Добавлено через 5 минут
На примере диспетчере задач
0
Миниатюры
Управлять другим приложением  
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 02:56  [ТС] 9
там смотреть надо окна? там еще есть процессы, потоки, пытаюсь словить я эту кнопку нажимая ее туда сюда или я не так делаю ?

Добавлено через 8 минут
как мне картинку сюда воткнуть ??? я щас покажу что у меня !!!
0
northener
пофигист широкого профиля
3453 / 2348 / 637
Регистрация: 15.07.2013
Сообщений: 13,963
04.08.2014, 02:57 10
Цитата Сообщение от zyr-dima Посмотреть сообщение
там смотреть надо окна? там еще есть процессы, потоки, пытаюсь словить я эту кнопку нажимая ее туда сюда или я не так делаю ?
Цитата Сообщение от zyr-dima Посмотреть сообщение
я не могу отвлекаться от основной задачи ... я не просто так, срочно по работе мне надо)
Короче ты пролетаешь как фанера над Парижем и ничего уже нельзя изменить. И это хорошо. В следующей жизни начни учиться хотя бы чуть-чуть раньше.
0
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 02:57  [ТС] 11
вот картинка
0
Миниатюры
Управлять другим приложением  
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 03:00  [ТС] 12
на моих часах пол 6 утра не сплю 2 сутки можно сказать ((( пролечу я может 10 раз над Парижем но своего добьюсь !
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 03:02 13
Лучший ответ Сообщение было отмечено zyr-dima как решение

Решение

Давай на родственных связях, нам нужно нажать на "внучку"
-Мать(бабушка)
--Дочь
---Внучка
1. Сначала ищем ФИО(хэндл) бабушки(первого родителя всех дочерей) -
2. Затем в документах бабушки ищем ФИО(хэндл) Дочери среди всех других дочерей -
3. Затем в документах дочери ищем ФИО(хэндл) Внучки

Delphi
1
2
3
4
5
ХЭНДЛ_БАБУШКИ:=FindWindow(nil,'Название бабушки');
ХЭНДЛ_ДОЧЕРИ:=FindWindowEx(ХЭНДЛ_БАБУШКИ,'Класс=Фамилия','Caption=Имя');
ХЭНДЛ_ВНУЧКИ:=FindWindowEx(ХЭНДЛ_МАТЕРИ,'Класс=Фамилия','Caption=Имя');
SendMessage(ХЭНДЛ_ВНУЧКИ,WM_LBUTTONDOWN,0,0); // жмем на внучку
SendMEssage(ХЭНДЛ_ВНУЧКИ,WM_LBUTTONUP,0,0); //отпускаем внучку))
не знаю как проще ))

На примере диспетчере задач



"Caption" Класс
Например сначала найдем окно Диспетчера задач
Delphi
1
wnd:=FindWindow('#32770','Диспетчер задач Windows'); //хэндл окна поместили в переменную wnd
Мы знаем, что кнопка "Завершить процесс" находится на вкладке "Процессы", значит ищем сначала вкладку, а потом объект, лежащий на ней(то бишь кнопку)
Delphi
1
wnd:=FindWindowEx(wnd,'#32770','Процессы'); // на объекте под хэндлом wnd(нашли его выше) ищем хэндл объекта "Процессы", что имеет класс #32770
Мы знаем, что на этой вкладке находится искомая кнопка, значит ищем её хэндл для нажатия.
Delphi
1
wnd:=FindWindowEx(wnd,'Button','&Завершить процесс'); //
Нашли кнопку, теперь жмем!
Delphi
1
2
SendMessage(wnd,WM_LBUTTONDOWN,0,0); // жмем кнопку
SendMEssage(wnd,WM_LBUTTONUP,0,0); //отпускаем кнопку
0
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 03:08  [ТС] 14
СУПЕР !! )) спасибо щас точно разберусь с кнопками .... а в меню файл, вид и прочее тоже по такому принципу лазить, то есть к примеру открыть вкладку "файл" затем "открыть файл" и тд
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 03:11 15
В теории да, но там слишком много мороки будет...
0
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 03:13  [ТС] 16
мороки вам описать ? ) если да то завтра же кину вам 200 рублей на тел ) за мороку )))
0
northener
пофигист широкого профиля
3453 / 2348 / 637
Регистрация: 15.07.2013
Сообщений: 13,963
04.08.2014, 03:15 17
Цитата Сообщение от zyr-dima Посмотреть сообщение
на моих часах пол 6 утра не сплю 2 сутки можно сказать ((( пролечу я может 10 раз над Парижем но своего добьюсь !
Удачи!
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 03:19 18
Вы хотите чтобы я вам все тут написал? Обратитесь в таком случае к фрилансерам, тут даже ветка есть
0
zyr-dima
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 15
04.08.2014, 03:26  [ТС] 19
и там я одного товарища нанял НО ковыряюсь сам на всякий случай.) с кнопками разобрался )))))))) ......атакую меню .........

Добавлено через 4 минуты
ОХ СУПЕР ВСЕ ПОЛУЧАЕТСЯ С КНОПКАМИ !!!!! АаАаА !!!! только с менюшкой бы еще помогите
0
WestSide072
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 320
04.08.2014, 03:27 20
Все точно также, ищи хендл меню, затем кнопки на объекте меню.
0
04.08.2014, 03:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2014, 03:27

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

Связь с другим приложением
Здравствуйте! Подскажите, пожалуйста, по следующему вопросу: Есть обычное приложение на C#....

Управление другим приложением
Допустим, мы имеем простое оконное приложение А, которое имеет падающее меню со списком цифр от 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru