Я написал кучу ботов в тот или иной момент (от игр Pogo до Yohoho Puzzle Pirates). Для окон вы обычно будете отправлять события Win32 для имитации движений мыши или подделывать фактически низкоуровневые сообщения, посылаемые между окнами, когда на самом деле щелкают мышью. Многое из этого зависит от того, как отреагирует программа (принимая сообщение с координатами или, в случае Java, сразу считывая координаты мыши). Часть «автоматизации» обычно включает чтение экрана и написание эвристики или алгоритмов для определения состояния, но также может быть столь же приятным, как анализ пакетов (много информации в плохих покерных реализациях) или же хакерским, как непосредственное считывание областей памяти. Довольно большое «поле», и плохо документировано, так как это довольно прибыльно и не трудно попасть в него.
Отправка ввода
C / C ++ (в Windows)
Для ключей попробуйте CodeProject:
http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx
И сообщения:
http://www.codeproject.com/KB/threads/sendmsg.aspx
Лучше всего научиться отправлять сообщения с помощью Win32 API, а затем использовать что-то вроде Spy ++ или его производных для «обратного инжиниринга» того, как нажатия клавиш и движения мыши отправляются в окно.
Java
У Java есть удивительно портативный класс Robot, который способен:
- Чтение пикселей с экрана.
- Управление мышью.
- Отправка ключей.
Я бы сделал это, если вы ищете быстрый и легкий.
Базовая логика
Это подробно описано в другом месте в Интернете, но большинство ботов следуют простому потоку программ конечного автомата. Вы читаете экран (или пакеты, или память), выясняете, в каком «состоянии» вы находитесь, основываясь на ваших показаниях и прошлых данных, выполняете вычисления и отправляете результат обратно в программу.
Чтение экрана может быть затруднено, но его можно упростить, если учесть, что много раз, есть несколько «счастливых» пикселей относительно окна, которые дадут вам представление о том, в каком состоянии находится программа. Процесс поиска этих пикселей может быть автоматизирован.