Читайте текст на экране из внешнего приложения. API-хукинг?

У меня есть опыт работы с Java, поэтому я имею ограниченные знания, когда дело доходит до C# и C++. В основном я пытаюсь "прочитать" текст из другого приложения, которое отображается на экране...

Если быть точным, я хочу прочитать сообщение чата от Pokerstars... на лету...

Каков наилучший способ прочитать этот текст в программе Java на лету? Я разбираюсь с перехватом API, это единственный способ, и как мне это сделать на Java?

Спасибо Фил

2 ответа

Решение

Один из способов сделать это, если текст не сглаживается, как на вашем изображении:

Из вашего приложения сделайте скриншот окна другого приложения. Ищите на скриншоте все небелые пиксели. Составьте список всех небелых пикселей. Для каждой пары небелых пикселей в списке, если пара касается друг друга, поместите их в одну и ту же "группу". Делайте это, пока все пиксели не будут сгруппированы вместе.

Затем для каждой группы сравните ее форму с таблицей предварительно определенных фигур. Если фигуры нет в таблице, попросите пользователя ввести букву, затем сохраните фигуру и какую букву она представляет в таблице.

Теперь у вас есть ASCII-коды для всех букв в окне.

Это не самый чистый способ выскрести текст из окна, но его трудно победить. Для любого шага, предпринятого другим приложением, чтобы сделать текст более трудным для чтения с помощью компьютера, человеку станет труднее читать, что снижает полезность приложения.

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

http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1

Еще одна вещь, на которую вы хотите обратить внимание, - это чтение сетевого трафика и сбор данных на этом уровне. В этом случае взгляните на wireshark.

http://www.wireshark.org/

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

Удачи.

Другие вопросы по тегам