![]() |
|
#1
|
|||
|
|||
![]() Доброго дня. Есть программа скрин которой здесь:
http://antsa.narod.ru/img.jpg Вверху есть рамочка, в рамочке значения давления, температуры, расхода, мне нужно их забрать от туда. Программа старая (вроде как) MSDOS, использует процесс который называется NTVDM.EXE, он является вирт.машиной, исполняющей 16-разрядные ДОС-приложения. Все это выводиться в консоль (CMD проще говоря). Мне позарез нужно достать от туда эти данные: Что я УЖЕ (за 3 дня) знаю что есть: ReadConsoleOutput http://winapi.freetechsecrets.com/wi...soleOutput.htm В ReadConsoleOutput функция читает характер и цвет атрибут данных из прямоугольных блоков характера клеток в буфер экрана консоли, а также функция записывает данные в прямоугольных блоков на указанном месте в буфер назначения. ReadConsoleOutputAttribute http://winapi.freetechsecrets.com/wi...tAttribute.htm В ReadConsoleOutputAttribute функция копии указанного количества плана и цвет фона атрибуты из последовательных ячеек консольный буфер экрана, начиная с указанного места. ReadConsoleOutputCharacter http://winapi.freetechsecrets.com/wi...tCharacter.htm В ReadConsoleOutputCharacter функция копии ряда персонажей из последовательных ячеек консольный буфер экрана, начиная с указанного места. Я делаю: Код:
|
#2
|
||||
|
||||
![]() Не пользовался такими функциями, но могу предположить, что чтение аттрибута вам ненужно, если там консоль интерпретируется как экран 80х25, то имеем 4000 байт, где 2000 байт аттрибут цвета (нафик вам ненужные) и 2000 байт собственно знаки. Потому скорее всего надо использовать ReadConsoleOutputCharacter. Могу так-же предположить, что вместо Buffer:array of integer; надо сделать Buffer:array[1..2000] of byte;
Тогда по логиге из Buffer вас будет интересовать 2 и 3 строка т.е. 81-240 символы. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Цитата:
|
#4
|
||||
|
||||
![]() Можно и так конечно, хотя большой разницы нет, что 14 раз вызвать функцию с нужными координами, что прочитать один раз 160 байт и обращаться к нужному элементу по индексу.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
![]() Только вопрос как получить это??!?!?!?
|
#6
|
||||
|
||||
![]() У меня появилось сильное сомнение, что
Код:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
|||
|
|||
![]() Цитата:
|
#8
|
||||
|
||||
![]() Я ведь тоже неиспользовал ранее этих функций, так-что тоже пионер в данном вопросе, но может у вас и правильно, а у меня он возвращает 0 и в Buffer у меня ничего невозвращается.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
![]() Можно использовать AttachConsole, но эта функция есть только в Windows XP и выше.
Вот готовая программа на WinAPI, котороя ловит окно по его названию и создает текстовый файл с содержимым этого окна. Код:
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра. |
#10
|
|||||
|
|||||
![]() Цитата:
Да!!! Лед тронулся: Код:
|
#11
|
|||||
|
|||||
![]() Цитата:
Это было то, что нужно пошарив про функцию аттачконсоль, я нашел много интересного и написал: Код:
Спасибо огромное!!! |