Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
vasea_morozov
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 16
#1

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

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

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

нахожу окна с помошю FindWindow(); и FindWindowEx(); (ето тачнее кнопка программы) как можно его программно нажать?
Вот опять я, Здравстуйте люди добрые ;) У меня вопрос: вот нахожу окна с...

Программно нажать F10
Как программно нажать F10 ?

Как программно нажать клавишу [=] и [-]?
Почти все поисковики перерыл, а ответа так и не нашел =( Мне нужно программно...

Нажать на неактивную кнопку
Задача проста сделать кнопку не активной Enabled=false; Но тогда нажать нельзя...

Нажать кнопку на вебстранице
Здравствуйте. Использую компонент CppWebBrowser для перехода по заранее...

12
Почтальон
Модератор
582 / 520 / 104
Регистрация: 22.03.2015
Сообщений: 3,617
Завершенные тесты: 1
02.06.2015, 14:25 #2
Цитата Сообщение от vasea_morozov Посмотреть сообщение
В игре DOTA2 перед тем как начать играть,появляется окно в котором нужно выбрать вариант"готов". Ты клацаешь и игра началась. Суть вопроса. я хочу сделать программу которая, сама принимает вариант "готов", то есть программу которая "например" сканирует определённый участок монитора и сравнивает картинку с этого участка с заранее подготовленной картинкой. Если совпадение есть то в игре выбираеться вариант"готов" посредством клика мышки например по определённым кардинатам. Некая программа которая даже если я отойду, сможет принять игру за меня.
Это делается по-другому. Нужно определить хендл окна(возможно даже по процессу), использовать перехватчик для нажатия.
Но сразу вас предупреждаю, такие вещи обычно несут не законный характер и если что - готовьтесь к последствиям.
1
vasea_morozov
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 16
02.06.2015, 16:55  [ТС] #3
ага, а если сделать так как я описал? Если я правильно понимаю, то так как вы написали можно отследить удалённо в плане закона?
0
CheshireCat
Эксперт С++
2907 / 1256 / 114
Регистрация: 27.05.2008
Сообщений: 3,450
02.06.2015, 17:42 #4
Цитата Сообщение от Почтальен Посмотреть сообщение
Это делается по-другому. Нужно определить хендл окна(возможно даже по процессу), использовать перехватчик для нажатия. Но сразу вас предупреждаю, такие вещи обычно несут не законный характер и если что - готовьтесь к последствиям.
С какой стати это незаконно?
0
Почтальон
Модератор
582 / 520 / 104
Регистрация: 22.03.2015
Сообщений: 3,617
Завершенные тесты: 1
02.06.2015, 17:46 #5
Цитата Сообщение от CheshireCat Посмотреть сообщение
С какой стати это незаконно?
Потому что ТС хочет модифицировать данные.
Цитата Сообщение от vasea_morozov Посмотреть сообщение
ага, а если сделать так как я описал?
Можно сделать как вы хотите, но это будет бооооольшой гемор
1
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
03.06.2015, 13:55 #6
Лучший ответ Сообщение было отмечено vasea_morozov как решение

Решение

Цитата Сообщение от Почтальен Посмотреть сообщение
Потому что ТС хочет модифицировать данные.
Никакие данные он не хочет модифицировать. Он хочет автоматизировать нажатие кнопки. В нажатии кнопки нет ничего противозаконного.

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

Первые попавшиеся ссылки:
http://www.cyberforum.ru/visual-cpp/thread68257.html
http://www.cyberforum.ru/visual-cpp/thread48138.html
http://www.cyberforum.ru/visual-cpp/thread10829.html
http://www.cyberforum.ru/qt/thread1202056.html
2
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
03.06.2015, 14:51 #7
Может и не сработать если игра скажем общается с железом не через обычные сообщенния, а сразу на апаратном уровне.
1
vasea_morozov
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 16
03.06.2015, 15:32  [ТС] #8
Господа,знали бы вы как приятно общаться с умными людьми!
0
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
03.06.2015, 15:39 #9
Цитата Сообщение от yarko Посмотреть сообщение
Может и не сработать если игра скажем общается с железом не через обычные сообщенния, а сразу на апаратном уровне.
Поясните пожалуйста свою мысль. Каким образом графический интерфейс может общаться с железом на аппаратном уровне?
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
03.06.2015, 16:45 #10
DirectInput
1
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
04.06.2015, 09:51 #11
Цитата Сообщение от yarko Посмотреть сообщение
DirectInput
Да. Это очень жестокая технология. Приползшая из DirectX в OpenGL, лишающая последний кроссплатформенности.
DirectInput позволяет нам не слушать виндовые сообщения и ждать в них от мыши, а непосредственно самим опрашивать ее.
Соглашусь, перехватить какую бы то ни было информацию из самой игры будет сложнее. Но что произойдет при попытке отправить ей сообщение, затрудняюсь сказать.
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
04.06.2015, 11:03 #12
А ничего не будет. Такая игра просто игнорит сообщения винды.
Я тоже пробовал для линейки такое делать. Полный ноль
0
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
04.06.2015, 11:21 #13
yarko, а если, предположим совершенно гипотетически, совпадет по времени момент нажатия кнопки и опрос устройства из программы?
0
04.06.2015, 11:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2015, 11:21
Привет! Вот еще темы с решениями:

Как нажать кнопку на сайте?
Ребята, срочно нужна помощь: как нажать кнопку на сайте? <a...

Нажать кнопку в чужом окне
Есть программа Steam нужно в ней нажать на кнопку "Создать новый аккаунт"...

Программно нажать клавишу (SendInput, keybd_event не предлагать)
для игры мне надо. SendInput вроде апишная функция но работает только если в...

Компонент MaskEdit должен стать доступным, если нажать на нем правой кнопкой мыши с зажатой клавишей Ctrl
На форме разместить компонент MaskEdit, в котором нельзя изменять текст. Если...


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

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

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