Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
vasea_morozov
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 16
#1

Дождаться появления окна и программно нажать на кнопку в нем - C++

02.06.2015, 13:41. Просмотров 392. Ответов 12
Метки нет (Все метки)

насколько это реально и что нужно сделать?
В игре DOTA2 перед тем как начать играть,появляется окно в котором нужно выбрать вариант"готов". Ты клацаешь и игра началась. Суть вопроса. я хочу сделать программу которая, сама принимает вариант "готов", то есть программу которая "например" сканирует определённый участок монитора и сравнивает картинку с этого участка с заранее подготовленной картинкой. Если совпадение есть то в игре выбираеться вариант"готов" посредством клика мышки например по определённым кардинатам. Некая программа которая даже если я отойду, сможет принять игру за меня.
Мне очень интересно что на это скажут матерые форумчане. Заранее благодарю!!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2015, 13:41     Дождаться появления окна и программно нажать на кнопку в нем
Посмотрите здесь:

Как программно нажать клавишу [=] и [-]? C++ Builder
Программно нажать кнопку мыши C++ WinAPI
C++ Программно загрузить веб-страницу, вставить текст и программно нажать кнопку
нахожу окна с помошю FindWindow(); и FindWindowEx(); (ето тачнее кнопка программы) как можно его программно нажать? C++ Builder
C++ Builder Программно нажать F10
Нажать на неактивную кнопку C++ Builder
Нажать кнопку на вебстранице C++ Builder
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Почтальон
Модератор
333 / 259 / 45
Регистрация: 22.03.2015
Сообщений: 1,990
Завершенные тесты: 1
02.06.2015, 14:25     Дождаться появления окна и программно нажать на кнопку в нем #2
Цитата Сообщение от vasea_morozov Посмотреть сообщение
В игре DOTA2 перед тем как начать играть,появляется окно в котором нужно выбрать вариант"готов". Ты клацаешь и игра началась. Суть вопроса. я хочу сделать программу которая, сама принимает вариант "готов", то есть программу которая "например" сканирует определённый участок монитора и сравнивает картинку с этого участка с заранее подготовленной картинкой. Если совпадение есть то в игре выбираеться вариант"готов" посредством клика мышки например по определённым кардинатам. Некая программа которая даже если я отойду, сможет принять игру за меня.
Это делается по-другому. Нужно определить хендл окна(возможно даже по процессу), использовать перехватчик для нажатия.
Но сразу вас предупреждаю, такие вещи обычно несут не законный характер и если что - готовьтесь к последствиям.
vasea_morozov
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 16
02.06.2015, 16:55  [ТС]     Дождаться появления окна и программно нажать на кнопку в нем #3
ага, а если сделать так как я описал? Если я правильно понимаю, то так как вы написали можно отследить удалённо в плане закона?
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
02.06.2015, 17:42     Дождаться появления окна и программно нажать на кнопку в нем #4
Цитата Сообщение от Почтальен Посмотреть сообщение
Это делается по-другому. Нужно определить хендл окна(возможно даже по процессу), использовать перехватчик для нажатия. Но сразу вас предупреждаю, такие вещи обычно несут не законный характер и если что - готовьтесь к последствиям.
С какой стати это незаконно?
Почтальон
Модератор
333 / 259 / 45
Регистрация: 22.03.2015
Сообщений: 1,990
Завершенные тесты: 1
02.06.2015, 17:46     Дождаться появления окна и программно нажать на кнопку в нем #5
Цитата Сообщение от CheshireCat Посмотреть сообщение
С какой стати это незаконно?
Потому что ТС хочет модифицировать данные.
Цитата Сообщение от vasea_morozov Посмотреть сообщение
ага, а если сделать так как я описал?
Можно сделать как вы хотите, но это будет бооооольшой гемор
SatanaXIII
Супер-модератор
Эксперт С++
5588 / 2622 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
03.06.2015, 13:55     Дождаться появления окна и программно нажать на кнопку в нем #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Почтальен Посмотреть сообщение
Потому что ТС хочет модифицировать данные.
Никакие данные он не хочет модифицировать. Он хочет автоматизировать нажатие кнопки. В нажатии кнопки нет ничего противозаконного.

vasea_morozov, берете Spy++ один раз, узнаете название класса кнопки, и потом хотите анализируете изменение части экрана, хотите ловите по человечески сообщения появления окна подтверждения готовности, и потом уж посылаете ему сообщение о нажатии кнопки готовности.

Первые попавшиеся ссылки:
Клик мышью по координатам
Достать текст(косим под Spy++)
Spy++ MSVS2005
Захват кнопкой курсора как в Spy++
yarko
64 / 64 / 16
Регистрация: 31.03.2015
Сообщений: 253
03.06.2015, 14:51     Дождаться появления окна и программно нажать на кнопку в нем #7
Может и не сработать если игра скажем общается с железом не через обычные сообщенния, а сразу на апаратном уровне.
vasea_morozov
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 16
03.06.2015, 15:32  [ТС]     Дождаться появления окна и программно нажать на кнопку в нем #8
Господа,знали бы вы как приятно общаться с умными людьми!
SatanaXIII
Супер-модератор
Эксперт С++
5588 / 2622 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
03.06.2015, 15:39     Дождаться появления окна и программно нажать на кнопку в нем #9
Цитата Сообщение от yarko Посмотреть сообщение
Может и не сработать если игра скажем общается с железом не через обычные сообщенния, а сразу на апаратном уровне.
Поясните пожалуйста свою мысль. Каким образом графический интерфейс может общаться с железом на аппаратном уровне?
yarko
64 / 64 / 16
Регистрация: 31.03.2015
Сообщений: 253
03.06.2015, 16:45     Дождаться появления окна и программно нажать на кнопку в нем #10
DirectInput
SatanaXIII
Супер-модератор
Эксперт С++
5588 / 2622 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
04.06.2015, 09:51     Дождаться появления окна и программно нажать на кнопку в нем #11
Цитата Сообщение от yarko Посмотреть сообщение
DirectInput
Да. Это очень жестокая технология. Приползшая из DirectX в OpenGL, лишающая последний кроссплатформенности.
DirectInput позволяет нам не слушать виндовые сообщения и ждать в них от мыши, а непосредственно самим опрашивать ее.
Соглашусь, перехватить какую бы то ни было информацию из самой игры будет сложнее. Но что произойдет при попытке отправить ей сообщение, затрудняюсь сказать.
yarko
64 / 64 / 16
Регистрация: 31.03.2015
Сообщений: 253
04.06.2015, 11:03     Дождаться появления окна и программно нажать на кнопку в нем #12
А ничего не будет. Такая игра просто игнорит сообщения винды.
Я тоже пробовал для линейки такое делать. Полный ноль
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2015, 11:21     Дождаться появления окна и программно нажать на кнопку в нем
Еще ссылки по теме:

Программно нажать кнопку в webBrowser C++ WinAPI
C++ Нажать кнопку на сайте
Программно нажать кнопку в тулбаре, зная его hwnd C++ WinAPI
Программно нажать кнопку на открытой в стороннем браузере веб-странице (cpp Builder 6) C++ Builder
C++ WinAPI Дождаться открытия окна

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5588 / 2622 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
04.06.2015, 11:21     Дождаться появления окна и программно нажать на кнопку в нем #13
yarko, а если, предположим совершенно гипотетически, совпадет по времени момент нажатия кнопки и опрос устройства из программы?
Yandex
Объявления
04.06.2015, 11:21     Дождаться появления окна и программно нажать на кнопку в нем
Ответ Создать тему
Опции темы

Текущее время: 17:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru