| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Возможно-ли достучаться до видео памяти монитора? |
| Автор: Ak47black 18.6.2007, 17:32 |
| Привет всем. Вообщем может что я напишу щас может быть абсурдом, но всетаки хочю спросить. Возможно-ли из программы написанной например на Delphi которая работает на ring 3 достучаться до памяти которой пользуется монитор что-бы вывести на монитор изображение Мне нужно научиться получать скриншот с экрана с молниеносной скоростью и вычислять изменения и потом посылать по сети, вообщем делаю удалённое управление. Пробовал разобраться в дебрях Mirror Driverа, но понял что на него ругается Vista-aero и не хочет работать, я как понял Microsoft это дело хочет с Mirror Driverом прикрыть и этот путь не безопасен. Вообщем как вы думаете? Добавлено через 1 минуту и 52 секунды P.S. Тему не много не корректно назвал. |
| Автор: Ak47black 18.6.2007, 18:09 | ||
А какие, можно подробней? Ну если просто сделать скриншот(я имею в виду получиться пиксели не в фомате PfDevice) то около 80ms гдето занимает через Winapi, что нагружает процессор если это очень быстро делать. Добавлено через 12 минут и 53 секунды Хотя может кривой код у меня. |
| Автор: Alexeis 18.6.2007, 18:26 |
| Ak47black, Так вроде Оверлей это и есть та самая поверхность которая нужна, там даже цветовой формат не RGB, YUV тот который у монитора. |
| Автор: Ak47black 18.6.2007, 18:35 | ||
| Alexeis, как получить доступ к нему? Добавлено @ 18:40
Ну так и выходит что сдирание много времени занимает, так бы не делали всяких Mirror Driveров как я понимаю. А в Mirror Driverе напрямую тянет app(ring3) из ring0(surface) через DrvEscape биты изображения. Там ешё конечно можно засеч на каких областях произошло рисование, но это можно при помощи простого сравнения двух Bitmap лижбы их получать быстро. Ну незнаю я так думаю |
| Автор: W4FhLF 18.6.2007, 19:10 | ||
И какая разница во-времени? 80ms вроде неплохой, я считаю. Ты уверен, что свой алгоритм уже не ускоришь? Профайлером посмотри. Ну ищи в сети "исполнение ring3 в ring0" |
| Автор: Alexeis 18.6.2007, 20:58 |
| что-то тут есть http://www.delphimaster.ru/articles/directx/index.html . |
| Автор: Ak47black 18.6.2007, 23:12 |
| Я эту статью уже читал, там вроде нету (или я плохо читал). Добавлено @ 23:14 А есть какие-то варианты без DirectX и прочей шелухи? |
| Автор: Alexeis 19.6.2007, 13:03 |
| Ak47black, мдя у мня вышло 37мс на 1024х768х32, но тоже скорость неудовлетворительная... |
| Автор: Ak47black 19.6.2007, 23:48 |
| Alexeis, лан тута надо еше как я вижу в сторону mirror driverа покопать. Я думаю что просто когда сдирает то он всякую ерунду не нужную делает. Тут надо с ring 0 тащить. |