Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Данные на экране, Получение данных с экрана и детальный их 
:(
    Опции темы
ShogunC
Дата 13.11.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.8.2008
Где: Киев

Репутация: нет
Всего: нет



Необходимо с окна запущеной программы получить данные и обработать их по своему.
Есть ли стандартные методы получения экрана монитора (PrtScr не подходит), точнее данных которые на нём, но не только как картинку?
PM MAIL ICQ   Вверх
HAL707
Дата 13.11.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.9.2007

Репутация: 1
Всего: 4



Тебе нужно смотреть в сторону API функций, которые и по сути и являются стандартными средствами.
PM MAIL   Вверх
Skynin
Дата 13.11.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 1
Всего: 10



ShogunC, "данные на экране" - это уже картинка. Экран о "данных" ничего не знает, для него все - пиксели.
Чтобы получить "данные с экрана" - нужно перехватить то место в программе, которые их передает для прорисовки.
Например некая функция в программе выводит "Привет"
Если хочется получить именно это, то нужно чтобы функция вызывала твою функцию, а не функцию которая превратит эту строку в картинку используя такие-то параметры шрифта.
Но что именно вызывает функция в программе, функции ОС, или свои, а ОС уже получает векторное или растровое изображение для прорисовки - большой вопрос.
Поэтому - стандартных средств - нет. И даже если подменишь API OC - не факт что сможешь получить от программы строку - "Привет"


Это сообщение отредактировал(а) Skynin - 13.11.2008, 17:30
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
HAL707
Дата 13.11.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.9.2007

Репутация: 1
Всего: 4



Если тебе нужны данные, которые содержаться в какой-то форме, можно предложить общий алгоритм, который позволит эти данные оттуда получить.
1.Ищем дескриптор окна нужной программы.
2.По найденному дескриптору получаем дескрипторы всех контролов окна.
3.Выбираем нужный контрол с данными, т.е. дескриптор окна контрола (самый сложный этап).
4.Читаем из него эти самые данные используя полученный дескриптор.
Все.
Во всяком случае сможешь получить данные, которые тебе нужны (ты говоришь "с окна", значит они содержатся
в каком-то контроле вероятно...)
Сам как-то подобным занимался. Вопрос в том, что это очень и очень геморно...
Материалы по нетовским API врапперам можно найти на pinvoke.net
PM MAIL   Вверх
ShogunC
Дата 13.11.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.8.2008
Где: Киев

Репутация: нет
Всего: нет



Цитата(Skynin @ 13.11.2008,  17:29)
ShogunC, "данные на экране" - это уже картинка. Экран о "данных" ничего не знает, для него все - пиксели.
Чтобы получить "данные с экрана" - нужно перехватить то место в программе, которые их передает для прорисовки.
Например некая функция в программе выводит "Привет"
Если хочется получить именно это, то нужно чтобы функция вызывала твою функцию, а не функцию которая превратит эту строку в картинку используя такие-то параметры шрифта.
Но что именно вызывает функция в программе, функции ОС, или свои, а ОС уже получает векторное или растровое изображение для прорисовки - большой вопрос.
Поэтому - стандартных средств - нет. И даже если подменишь API OC - не факт что сможешь получить от программы строку - "Привет"

То есть данные на экране - картинка в видео памяти? 
А не могут ли "данные на экране" храниться еще где то в оперативной памяти как строковые или кодовые или еще какие то?

Добавлено через 3 минуты и 33 секунды
Цитата(HAL707 @ 13.11.2008,  18:00)
Если тебе нужны данные, которые содержаться в какой-то форме, можно предложить общий алгоритм, который позволит эти данные оттуда получить.
1.Ищем дескриптор окна нужной программы.
2.По найденному дескриптору получаем дескрипторы всех контролов окна.
3.Выбираем нужный контрол с данными, т.е. дескриптор окна контрола (самый сложный этап).
4.Читаем из него эти самые данные используя полученный дескриптор.
Все.
Во всяком случае сможешь получить данные, которые тебе нужны (ты говоришь "с окна", значит они содержатся
в каком-то контроле вероятно...)
Сам как-то подобным занимался. Вопрос в том, что это очень и очень геморно...
Материалы по нетовским API врапперам можно найти на pinvoke.net

Спасибо, приму к сведению и буду идти в данном направлении.
П.С. Действительно, нужно схватить данные из контрола типа DBGrid или что то в этом духе.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.