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


Автор: everyone 26.2.2009, 21:19
Стоит задача написать бот для покер-клиента.

смысл в том, что нужно получать данные из окна программы X. И затем, обработав их, программно манипулировать элементами той же самой программы X. Всё вроде бы тривиально.

Но здесь сразу и возникла проблема. Как находить эти самые окна, и элементы в них? Как к ним обращаться? и как ими программно управлять?

мне нужно хотя бы направление, в котором искать решение.

я знаю C++ на уровне университетских задачек, но почему-то мне кажется, что на этом языке реализовать проект проще всего.

Автор: ИванМ 26.2.2009, 21:35
Цитата(everyone @  26.2.2009,  21:19 Найти цитируемый пост)
мне нужно хотя бы направление, в котором искать решение.

Направление: GetWindow, FindWindow 

Автор: everyone 26.2.2009, 22:28
нашёл утилиту WinSpy - вроде для поиска свойств сторонник окон. Надеюсь это работает

с GetWindow, FindWindow всё ясно. В теории

спасибо

Автор: azesmcar 27.2.2009, 19:36
Задача не из простых, возможно придется писать распознование изображений чтоб понять какие карты и тому подобное..хотя не факт, зависит от покер клиента, посмотри ссылку

http://www.codingthewheel.com/archives/how-i-built-a-working-online-poker-bot-4

Если ты всерьез решил этим занятся то должен знать какие могут быть проблемы, если просто хочешь поразвлечся немного опишу

1. Клиенты в основном постоянно обновляются, возможно с каждым клиентом тебе придется менять бота
2. Многие серьезные производители покерных онлайн игр вписывают алгоритм распознавания ботов, так что опять такие придется менять бота.

и тому подобное...

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

Написанием покер ботов занимаются серьезные фирмы - которые серьезно зарабатывают на этом..да и серьезно вкладывают..игровой бизнес - самый прибыльный после наркотиков smile

Я это рассматривал когда-то по работе, проблем не оберешся.

Будут вопросы - обащяйся

Автор: everyone 14.3.2009, 14:24
первые тридцать секунд мне казалось, что всё будет гораздо проще.

единственным верным решением теперь мне кажется графическое распознавание. Чтобы не слишком глубоко углубляться в программирование и обучение нейронной сети, есть проект - http://www.cuneiform.ru/.

похоже у меня появилось новое хобби)

Автор: snakeron 1.4.2009, 10:53
Привет.
Недавно озадачился такой же проблемой. Поиск в гугле ничего не дал, пофлудил по форумам, и только сдесь нашёл нечто подобное.

Цитата

похоже у меня появилось новое хобби)

Хотелось бы узнать, что ты выяснил? Есть ли какие-либо результаты?

Автор: everyone 5.4.2009, 20:43
Я пришёл к выводу, что нужно писать программу со зрительным распознаванием стола и эмуляцией мыши, чтобы не болела голова по поводу систем распознавания ботов.

GetWindow, FindWindow ничем не могут помочь. Покер-клиенты в плане составляющих компонентов похожи на чёрные ящики. Если и удаётся добраться до захудалой кнопки, то добиться от неё связной информации невозможно (я не смог; мметоды тестировал на MansionPoker)

Вспомнил C++, прочитал тёмные для меня главы

Cuneiform работает... судя по их форуму)

Всё могло быть и немного лучше, но как всегда... время

заниматься одному такими вещами сложно и не интересно

Автор: everyone 5.4.2009, 22:42
Cuneiform не распознаёт маленькие символы.
Пришлось растягивать изображение, применять инверсию и повышать резкость.
Картинка в файле.

результат:

marlon8585 
2,980, Folded


Это результат получен в стандартной GUI программе.
Что касается сборки их исходников, как я понял, без VС++ не обойтись, а значит бесплатно проект не собрать. Или, если смотреть на вещи оптимистичнее, среда разработки определилась

Автор: jonie 6.4.2009, 08:47
VC бесплатен.

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