Читайте текст на экране из внешнего приложения. API-хукинг?
У меня есть опыт работы с Java, поэтому я имею ограниченные знания, когда дело доходит до C# и C++. В основном я пытаюсь "прочитать" текст из другого приложения, которое отображается на экране...
Если быть точным, я хочу прочитать сообщение чата от Pokerstars... на лету...
Каков наилучший способ прочитать этот текст в программе Java на лету? Я разбираюсь с перехватом API, это единственный способ, и как мне это сделать на Java?
Спасибо Фил
2 ответа
Один из способов сделать это, если текст не сглаживается, как на вашем изображении:
Из вашего приложения сделайте скриншот окна другого приложения. Ищите на скриншоте все небелые пиксели. Составьте список всех небелых пикселей. Для каждой пары небелых пикселей в списке, если пара касается друг друга, поместите их в одну и ту же "группу". Делайте это, пока все пиксели не будут сгруппированы вместе.
Затем для каждой группы сравните ее форму с таблицей предварительно определенных фигур. Если фигуры нет в таблице, попросите пользователя ввести букву, затем сохраните фигуру и какую букву она представляет в таблице.
Теперь у вас есть ASCII-коды для всех букв в окне.
Это не самый чистый способ выскрести текст из окна, но его трудно победить. Для любого шага, предпринятого другим приложением, чтобы сделать текст более трудным для чтения с помощью компьютера, человеку станет труднее читать, что снижает полезность приложения.
Если приложение, к которому вы хотите подключиться, это C#, то, возможно, лучше всего начать с рефлектора.
http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1
Еще одна вещь, на которую вы хотите обратить внимание, - это чтение сетевого трафика и сбор данных на этом уровне. В этом случае взгляните на wireshark.
Возможно, вы сможете создать прокси-сервер, где данные будут передаваться через ваше приложение на сетевом уровне, и вы будете передавать их, но зачитываете интересные части.
Удачи.