|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||||
Быстрая эмуляция нажатия клавиш в боте для браузерки14.02.2013, 19:20. Показов 10208. Ответов 42
Метки нет (Все метки)
Пишу бота для браузерных танчиков.Прицеливание работает по принципу:через BitBlt копируется нужное окно в память, там ищутся группы пикселей определенного цвета(цвет имени врага), и если таковые найдены, нужно жать определенную кнопку(z или x) до тех пор, пока разница по абсциссе между центром имени противника и центром своих жизней(по ним определяется направление пушки), не станет меньше определенного числа(25 пикселей в данном случае). Эмуляцию нажатия клавиш реализую через PostMessage, ибо работать должно в неактивном окне. Все вроде пашет, но загвоздка в том, что пушка нередко "проезжает" цель, и начинается вертеться перед ней туда-сюда, то бишь PostMessage об отпускании клавиши не доходит вовремя. Сам алгоритм определения, когда надо остановиться, в ряд ли может быть неверным, ибо 100 раз проверен и в целом работает(то есть останавливается вовремя в тех случаях, когда пушка вертится медленнее обычного, либо просто удачно повернулась). Сообщения, которые я посылаю, полностью соответствуют аналогичным при реальном нажатии клавиш(через Spy++ проверялось). Кроме того при попытке эмулировать через keybd_event получилось ровно то же самое. Чего только не пробовал-и задержки разные, и сообщения, все то же самое. Скачал виртуальную клавиатуру-при попытке управлять с нее все работает нормально, то есть теоретически такая эмуляция возможна. Сразу скажу, что производительность при обработке изображения тут не причем, FPS достаточный, чтобы несколько кадров попало в положение, когда надо остановиться. На данный момент прога работает с гугл хромом, там проще однозначно достать хэндл нужного окна. Часть кода прилагается, желающим могу скинуть заготовку проги в личку. Жду ваших предположений, как это устранить, я пока что в тупике( но выход ищу. Заранее благодарен. Рабочие способы реализовать такое на других языках и по другим принципам тоже буду рассматривать, ибо делаю чисто ради развлечения и саморазвития, никуда не спешу. Эти куски кода миллион раз переписывались, на мелкие несуразности можете не обращать внимание, главное-указанный выше вопрос.
0
|
||||||
| 14.02.2013, 19:20 | |
|
Ответы с готовыми решениями:
42
Эмуляция нажатия клавиш для SDL Эмуляция нажатия клавиш для неактивного/свёрнутого приложения. Эмуляция нажатия клавиш для другого приложения (Win10 Под D3D) не работает |
|
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
|
|
| 14.02.2013, 22:03 | |
|
я думаю, что это не лучшее решение - снятие скринов. как альтернативу - смотри в сторону - http://rghost.ru/42782537 . там можно и пиксели поискать без снятия скринов, и нажатия клавиш окну поотправлять
1
|
|
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 14.02.2013, 22:26 [ТС] | |
|
Спасибо, как разберусь что там к чему-отпишусь. У кого еще будут предложения-пишите
0
|
|
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|||||||||||
| 17.02.2013, 19:21 [ТС] | |||||||||||
|
Если кому не лень, поясните пожалуйста, как этой библиотекой по ссылке воспользоваться, у меня как ни подключай-то один эксепшен то другой.
Добавлено через 1 час 4 минуты Нашел наконец-то на иностранном форуме как подключать такую библиотеку. Надо оказывается было качать отсюда http://www.autoitscript.com/site/autoit/downloads/ инсталлятор, а потом регистрировать вручную AutoItX3.dll вот так: regsvr32 "полный путь к dllке". Потом уже идешь в ссылки и выбираешь ее среди COM объектов, и тогда только она начинает пахать. Добавлено через 16 часов 3 минуты Если кто уже в курсе, объясните пожалуйста, как подать хэндл окна куда-нибудь в аутоите, ибо вот такой код:
Не пашут так же любые попытки подать туда уже найденый апишными функциями хэндл. Хотелось бы пример.Если найду как это сделать-отпишусь, а то в сети что-то мало инфы по шарпу с аутоитом. Добавлено через 9 часов 25 минут
0
|
|||||||||||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
||
| 17.02.2013, 21:30 | ||
|
EvilFromHell, ну там же документация была с библиотекой. она проста в использовании, и довольно удобна для работы с окнами, допустим - мне надо было найти окно одного процесса, а окно не имело заголовка, и тд. с помощью либы можно получить все окна процесса. я просто не представляю, как это бы выглядело на вин апи. наверное нужно было бы тонну кода писать
а тут пару строчек - и все готово.Добавлено через 25 секунд насчет регистрации библиотекы - хз., проверю у себя и отпишусь Добавлено через 15 минут Добавлено через 6 минут да при отмене регистрации либа не работает видимо эта библиотека просто вызывает функции из оригинальной а я то думал...
0
|
||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||
| 17.02.2013, 22:01 [ТС] | ||
Пока что как корректно что-либо отослать при помощи этой библиотеки я еще не разобрался, но было мало времени, еще разберусь. По умолчанию конкретно эта функция шлет WM_CHAR на который игра не реагирует и к тому же активирует окно, а мне надо в неактивное слать.Документацию может быть я кривовато читал, но там нигде не написано про корректную подачу хэндла в эту функцию. В файле в архиве по ссылке про него не сказано ни слова в описании функции, а уж тем более про вызов ее из C#. Кроме того как именно ту библиотеку подключить, что по ссылке, я так и не врубился. Если про корректную эмуляцию в неактивное окно общеизвестно-отпишись пожалуйста, как это, чтобы долго не искать ![]() И еще на счет пикселей интересно-реально узнать цвет пикселей в окне, которое не отображено(под другими) и быстрее чем указанным в первом посте способом? или можно не возиться, все равно не выйдет? Добавлено через 4 минуты Забыл среду написать-студия 2010. Добавлено через 12 минут Кстати на счет хэндла-у меня он имеет тип IntPtr, и найден через апи. А про эту хитрую форму записи так просто не догадаешься, в студии просто как стринг выглядит, никаких пояснений.
0
|
||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
||||||||||||
| 17.02.2013, 22:12 | ||||||||||||
я так понимаю - нужен бот, чтобы работал и можно было еще кое что на компьютере делать? чтобы не "блокировал" комп? игра на флеше? ее можно же разобрать и написать бота без этих всех поисков пикселей. хотя если "разобрать" - то это наверное уже выходит за рамки закона, и за рамки этого форума. типо взлом же Добавлено через 1 минуту
0
|
||||||||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|||||||||||
| 17.02.2013, 23:07 [ТС] | |||||||||||
![]() Да и хочется сделать так, чтобы бот никак не зависел собственно от игры, ее версий, пакетов, структуры и тд, раз это теоретически можно реализовать таким способом. Чтобы был прост как дубина-нажал кнопку и все катается, а юзер при этом делает что хочет ![]() Игру вероятно видели в инете-танки онлайн зовется. Добавлено через 4 минуты Добавлено через 26 минут
Мой пост внизу глянь Если известен заголовок-то это 2 строчки: GetWindow и GetWindowRect.
Добавлено через 12 минут
0
|
|||||||||||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
|||||
| 18.02.2013, 00:25 | |||||
с этими пикселями. где то какое то окно вылезет вверх и бот не будет работать, как надо. я говорил, что нужно разобрать игру, и смотреть, как можно бота сделать.
Добавлено через 2 минуты да насчет функции той. что мешает использовать заголовок окна, а не хендл?
0
|
|||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||
| 18.02.2013, 00:47 [ТС] | ||||
Гибкой настройки пока не нашел там.
но зато весело и познавательно, ведь управление чужими приложениями мне еще миллион раз пригодится.
0
|
||||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
||||||||||
| 18.02.2013, 01:14 | ||||||||||
|
EvilFromHell, под файтастикой я имел ввиду - окно свернутое, и что бы бот исал пиксели.
Добавлено через 9 минут кстати, я тут подумал. ты же делаешь скрины, а потом пробегаешь по пикселям и ищещь нужны да? а ты не думал, что иногда просто не успевает программа найти пиксель, от этого тормоза при нажатии мыши? может нужно как то распараллелить поиск? ну там в несколько потоков запускать чтоли Добавлено через 1 минуту
0
|
||||||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||||||
| 18.02.2013, 01:18 [ТС] | ||||||||
.Добавлено через 2 минуты Эти таймеры вроде бы запускаются в своем потоке, их там аж 3 вида.. по крайней мере дело тут по-моему не в них( Я кроме таймеров чего только не пробовал.
0
|
||||||||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
||||
| 18.02.2013, 01:25 | ||||
0
|
||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||
| 18.02.2013, 01:33 [ТС] | ||||
0
|
||||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
|||
| 18.02.2013, 01:41 | |||
ну если снимает скрин с окна нижнего - тогда ок
0
|
|||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||
| 18.02.2013, 01:50 [ТС] | ||
0
|
||
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
||||||
| 18.02.2013, 02:03 | ||||||
|
а я вот сделал тестовое приложение
если бы цикл запускал в отдельном потоке - то такого бы не случилосьвывод - таймер не создает поток, а использует тот, из которого он вызван
0
|
||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 18.02.2013, 02:04 [ТС] | |
|
Ты глянь свой таймер и мой, они разные и из разных пространств имен
0
|
|
|
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
|
|
| 18.02.2013, 02:08 | |
|
и почитай - несколько таймеров в программе? . у тебя операции попросту ставятся в "очередь" возможно изза этого и тормозит.
0
|
|
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 18.02.2013, 02:09 [ТС] | |
|
Но даже у твоего таймера тики хоть и в одном потоке работают, но относительно друг друга-асинхронно, что легко проверить выведя мессадж бокс.
0
|
|
| 18.02.2013, 02:09 | |
|
Помогаю со студенческими работами здесь
20
Перехватчик клавиш + эмуляция нажатия клавиш Эмуляция нажатия клавиш. Эмуляция нажатия клавиш Эмуляция нажатия клавиш Эмуляция нажатия клавиш Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|