2010-11-15 2 views
1

Я хочу разработать приложение для аудита для некоторых приложений Windows. Я хочу захватить текст из MessageBoxes, Windows, Forms, Selections и т. Д., И в идеале я хотел бы запрограммировать на C++.«Скребок поля» в Windows

Я рассмотрел Windows UI Automation как возможное решение, но немного отложил, поскольку он говорит, что ему нужно будет знать части базовых структур данных, к которым я не могу добраться. В качестве альтернативы, я огляделся, и Neo's SafeKeys говорит, что он защищает от «очищения поля», но после его поиска я не могу найти никакой информации о том, как это делается. Может ли кто-нибудь с этим опытом просветить меня? Я знаю, что вы можете царапать веб-сайты и тому подобное, но вместо этого я хочу скопировать приложения.

Любая помощь была бы принята с благодарностью.

ответ

1

Посмотрите на использование уровня доступности, MSAA

+0

Выглядит многообещающе, похоже на то, о чем говорит Стю, но как API. Большое спасибо! – Dororo

0

Простой способ сделать это, не приближаясь к каким-либо структурам данных, - использовать OCR SDK от Abbyy http://www.abbyy.com/ocr_sdk/, чтобы эмулировать в приложении то, что делает их удивительный читатель Скриншотов. http://www.abbyy.com/screenshot_reader/. С помощью этой технологии ничего, что вы можете прочитать на экране, не может быть захвачено как текст, хотя иногда это создает беспорядок.

+0

Я рассмотрю это, спасибо. В идеале я хотел бы держаться подальше от экрана, использующего программное обеспечение, но тем не менее это решение, которое мне нужно будет рассмотреть, если нет другого разумного способа сделать это. – Dororo

1

Я предполагаю, что они говорят о том, чтобы делать много EnumChildWindows() и GetWindowText().

+0

Ahh Я вижу, и это может «потенциально» получить доступ к каждому элементу приложения? – Dororo

+0

Если они используют фактические элементы управления, а не просто рисуют поддельные в главном окне. – Stu

+0

Я вижу, это пригодится. Спасибо. – Dororo