Соскоб экрана приложения C без использования OCR или DOM? - PullRequest
0 голосов
/ 02 октября 2009

У нас есть устаревшая система, которая по сути является прославленным интерфейсом telnet. Мы не можем использовать альтернативную клиентскую программу telnet для подключения к системе, поскольку в предоставленное нами клиентское программное обеспечение встроены специальные функции.

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

Я пытался использовать WindowSpy и Spy ++, чтобы проверить текст окна, и оно оказалось пустым. Это специальная программа на C, написанная продавцом (они даже отключили выделение текста). Я действительно ищу бесплатную опцию и кое-что, что я, возможно, смогу использовать в сочетании с языком сценариев.

Кажется, что единственный способ получить текст - это непосредственно из GDI Windows или из памяти, но это выглядит немного экстремально.

Кто-нибудь может порекомендовать какое-либо программное обеспечение / библиотеки DLL, которые могли бы достичь этого? Я был бы чрезвычайно благодарен.

Ответы [ 3 ]

0 голосов
/ 02 октября 2009

У меня была похожая проблема с приложением Windows, использующим настраиваемое текстовое поле, которое я не мог скопировать. К счастью, это был моноширинный шрифт. Получить данные было так же просто, как сделать снимок экрана и написать небольшую программу на Python, чтобы перебрать каждый символ в изображении, преобразовать в строку из 1 и 0, а затем использовать ее как ключ к словарю, где я сохранил отображение из растрового изображения-> буквы.

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

0 голосов
/ 16 июня 2010

В итоге я просто открыл программу, работающую в памяти, в шестнадцатеричном редакторе (я использовал WinHex), а затем обнаружил, где находится текст в памяти.
Затем я получил код очистки памяти для AutoHotKey и AutoIt, который будет читать текст любого количества символов с определенного адреса памяти.

0 голосов
/ 02 октября 2009

Следующее не будет работать, если поток данных зашифрован, и проверьте свои лицензии, чтобы убедиться, что это законно.Почему бы вам просто не подключиться к нему через прокси-сервер, который регистрирует все передачи данных.

Если он действительно просто работает с текстом, это должно быть тривиально.

Менее желательный подход заключается вделать снимки экрана и запустить OCR, чтобы захватить текст.Для обоих подходов доступно множество решений, но у меня нет конкретных рекомендаций, которые я бы порекомендовал.

...