Java - zczytywanie tekstu w czasie realnym

Java - zczytywanie tekstu w czasie realnym
Kontr salla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Witam! Trafiłem na problem którego nie umiem rozwiązać - potrzebuję napisać program który zczytuje tekst wyświetlany przez inny program na monitorze ( nie bardzo wiem czy da się rozwiazać ten problem podając ścieżkę programu ponieważ tekst jest wyświetlany bardzo zmiennie w czasie realnym). Prosiłbym o jakieś podpowiedzi/tipy odnośnie mojego problemu gdzie szukać/czego szukać

damianem
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
2

Jeśli program który chcesz "szpiegować" jest programem GUI i używa natywnych systemowych kontrolek to jest szansa, że będziesz mógł do takiego tekstu się dobrać przez natywne API systemu (np. WinAPI w Windows), używając np. biblioteki JNA.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Możesz próbować kraść zawartość przez jakies WinAPI, ale może prościej będzie napisać debugger który będzie te dane bezpośrednio wyciągać z pamięci?

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
0

Java jest dalece nieoptymalnym języiem do tego zadania.
Zgaduję, pewnie pytasz, bo nie znasz innego.
WinAPI CIę nie minie, a z Javy przez JNA będzie to po trzykroć trudne

C lub C++

AN
  • Rejestracja: dni
  • Ostatnio: dni
3

Niezależnie od powyższego, w ostateczności można próbować z OCR ekranu (o ile ta druga aplikacja ma GUI). Robienie print screen ekranu jest możliwe w Javie, a do OCR można wykorzystać Tesseract (aplikacja działająca w linii poleceń, gdzie na wejściu podajesz plik z obrazkiem, a na wyjściu dostajesz rozpoznany tekst). Twój program wygeneruje obraz i odbierze tekst.

Problemem w taki podejściu jest renderowanie subpikselowe zwane ClearType, które utrudnia OCR, ale w pewnym stopniu da się odtworzyć oryginał, mogę opisać, jak sobie z tym poradzić, jak będziesz zainteresowany.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.