Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Содержимое экрана Dos-приложения в WinXP
Посл.ответ Сообщение

Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 ноября 2006 13:16
· Личное сообщение · #1

Как можно получить содержимое экрана дос приложения, работающего в полноэкранном режиме в WinXP. Дос приложения в
WinXP выполняются в подсистеме VDM (ntvdm.exe). Хотелось бы еще узнать по больше про принцип работы данной подсистемы.
Есть ли у нее место где храниться видео памямять дос-приложения, либо она просто отлавливает все запросы и прерывания и
вызывает 32 разрядные функции для выполнения задачи. Либо она вызывает 32 разрядные функции для вывода в консоль и все
данные уже обрабатываются GDI???




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 25 ноября 2006 16:24
· Личное сообщение · #2

Запускай софтину под DOSBox, и грабь с экрана. ДОС таки умер, нет его больше в новых операционках



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 25 ноября 2006 23:15
· Личное сообщение · #3

porosenok пишет:
Есть ли у нее место где храниться видео памямять дос-приложения,

Есть конечно. Недавно проверял старую прогу - в текстовом режиме по адресу B800:0 лежит буфер экрана, как это и было во времена чистого ДОС. Цепляешь ольгу к ntvdm.exe и смотришь, где это в самом ХП. Инфу по ntvdm.exe ищи на wasm.ru



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 ноября 2006 02:09
· Личное сообщение · #4

Искал я в Ольге место в ntvdm, где может быть спроецирована видео память, но так и не нашел



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 ноября 2006 02:10
· Личное сообщение · #5

Возможно содержимое видео памяти хранится в недрах ХР???? И добраться туда можно только на 0 уровне???



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 ноября 2006 09:58
· Личное сообщение · #6

Варианта два :
Либо Helper, написанный для Dos, который без проблем работает с видеопамятью как напрямую, так и через прерывания.
Либо из Винды, используя функции консольного API. А именно ReadConsoleOutput.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 27 ноября 2006 11:03
· Личное сообщение · #7

porosenok пишет:
Искал я в Ольге место в ntvdm, где может быть спроецирована видео память, но так и не нашел

Не думаю что ты найдёшь буфер.... Весь газенваген с прерываниями эмулируется, и просто так вряд ли храниться. В конце концов всё выводится в console window используя API.... так что, может тебе попробовать перехватом?



Ранг: 6.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 ноября 2006 03:42
· Личное сообщение · #8

Вот что нашел:
homepages.tesco.net/J.deBoynePollard/FGA/capture-console-win32.html



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 30 ноября 2006 04:26
· Личное сообщение · #9

newbb
случай работы с графикой там не разобран, хотя, возможно, автору это и не нужно.
В остальном - немного более детально расписано то, что имел в виду OCTAGRAM: использование функций консольного API - ReadConsoleOutput.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 30 ноября 2006 07:14
· Личное сообщение · #10

s0larian пишет:
Не думаю что ты найдёшь буфер....

Да блин, а что посмотреть долго. Там он и хранится - по адресу B8000 и т.д. Соответственно графический по A0000. Развели демагогию



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 ноября 2006 11:56
· Личное сообщение · #11

tundra37 пишет:
s0larian пишет:
Не думаю что ты найдёшь буфер....
Да блин, а что посмотреть долго. Там он и хранится - по адресу B8000 и т.д. Соответственно графический по A0000. Развели демагогию

Я прекрасно это знаю. Меня интересует не работа в Досе с памятью (видео буфером). Меня интересует можноли из под виндовс найти этот видео буфер и прочитать его содержимое.
Содержимое окна консольного приложения нормально читается с помощью ReadConsoleOutput, это я знаю. Есть даже функци AttachConsole для подключения к любому процессу, но для нее не хватает прав. Вот и хотел побольше узнать о способе эмуляции доса в NT



Ранг: 4.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 ноября 2006 20:44
· Личное сообщение · #12

Не пробовал курить MSDN на тему отладки dos приложений?
google:vdmdbg



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 01 декабря 2006 00:21
· Личное сообщение · #13

porosenok пишет:
Я прекрасно это знаю

Не, ну все нужно разжевать. Подцепи олли к ntvdm.exe и посмотри ее адрес B8000 - в памяти ntvdm.exe
Что собственно неудивительно - логично один и тот же адрес сделать. Про права не знаю - админ может ее читать.



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 декабря 2006 11:58
· Личное сообщение · #14

tundra37 пишет:
Не, ну все нужно разжевать. Подцепи олли к ntvdm.exe и посмотри ее адрес B8000 - в памяти ntvdm.exe
Что собственно неудивительно - логично один и тот же адрес сделать. Про права не знаю - админ может ее читать.


Ага прям так вот лежит и ждет. Нет там ничего, одни нули. С чего вдруг решил, что будет именно там???



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 04 декабря 2006 23:01
· Личное сообщение · #15

porosenok пишет:
С чего вдруг решил, что будет именно там???

Я просто посмотрел. Не имею обыкновения непроверенные сведения сообщать.
Нули естественно там будут, если у тебя не текстовый режим. В этом случае адрес видео-буфера A0000,
а в B8000 будет середина(если я не вру) второй видео-страницы. Это я не проверял
Для ясности : я не думал, что будет так просто и вызвав debug.exe(он автоматом текстовый режим делает) заполнил верхнюю строчку экрана. Потом выдал команду d b800:0 и поискал эти хексы в памяти ntvdm.exe Нужно не только уметь давить на клавиши и читать, но еще и немного думать




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 05 декабря 2006 00:02
· Личное сообщение · #16

porosenok
SnagIT попробуй, он тоже работает с полноэкранными DOS окнами.

-----
Get busy living or get busy dying ©



 eXeL@B —› Программирование —› Содержимое экрана Dos-приложения в WinXP
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати