Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Видюха и моя программа


Сергей Николаев ©   (2002-08-29 14:53:00) 

Как перехватить вывод изображения на монитор с видюхи?
Пробовал DirectX, не помогает.
Наверно, OpenGL лучше?
Как Вы считаете?


max2057   (2002-09-02 14:01:00) [1]

ну ты и шутник Сергей Николаев


Сергей Николаев   (2002-09-02 10:12:00) [2]

Ладно. Всем спасибо за участие :o)
Это была разводка.
Надеюсь, с чуством юмора у вас всё в порядке?


Almaz   (2002-08-31 03:40:00) [3]


> Сергей Николаев (30.08.02 17:02)
>
> Мне интересно, как именно из Delphi перехватить поток данных
> в ОЗУ контроллера EGA/VGA.


Скажу сразу - из Delphi никак. Такое (или почти такое) зверство можно осуществить только путем написания собственного драйвера видеокарты. Однако, это довольно сложная задача, да и смысла я в ней не вижу. Чем ,все-таки, вас не устраивает стандартный вывод на экран ? Для чего пишется эта задача ?

Удача.


eSKey   (2002-08-30 18:12:00) [4]

Не дури народ.


Сергей Николаев   (2002-08-30 17:02:00) [5]

Спасибо большое! Но вопрос был немного про другое.

Мне интересно, как именно из Delphi перехватить поток данных в ОЗУ контроллера EGA/VGA.

Ведь мне нужно не рисовать на экране, а модифицировать поток вывода на видюху, чтобы встраивать изображение моего меню (кнопочки и ttoolbar) так, чтобы пользовательские программы не догадывались о его существовании.


max2057   (2002-08-30 14:59:00) [6]

только hDC:= GetDC(hDesk);
может не сработать - тогда пиши -
....
hDC := GetDc(0) ; // ноль именно ноль!
...
а не hDC:= GetDC(hDesk);
не забывай ,что при перемещении значков и окон над твоей менюшкой она будет затираться - ты должен перерисовывать
свою менюшку в таких случаях.
Глянь хелп по SetWindowsHookEx - я думаю с его помошью ты сможешь отлавливать перемешения окон других программ.


max2057   (2002-08-30 14:54:00) [7]

Насчет кадровой развертки не знаю. Но поскольку desktop window - это то же window то у него handle, по этому handle ты можешь получить DC(device context), используя который ты можешь рисовать в этом DC.
Примено так:
var
hDesk : THandle ;
hDC : THandle ;
s : string ;
begin
hDesk := GetDesktopWindow;
hDC := GetDC(hDesk);
s := "мля я на Десктопе" ;
TextOut(
hDC, // handle of device context
10, // x-coordinate of starting position
10, // y-coordinate of starting position
pchar(s), // address of string
Length(s) // number of characters in string
);
end;





Сергей Николаев   (2002-08-30 10:37:00) [8]

Ну типа Print Screen на Canvas-e Главного Системного Окна desktop window.
Только с частотой кадровой развёртки.
И вставлять в получаемый поток данных квадратное окошко со списком опций моей программы.
Чтобы пользователь всегда его видел на Canvas-e главного системного окна.
Помогите, пожалуйста.


max2057   (2002-08-29 17:04:00) [9]

Что значит перехватить. Видюха на монитор выдает аналоговый сигнал, который тот собствено и воспроизводит - как ты себе представляешь программный перехват аналога и его использование?


Наверх

Титульная страница Поиск, карта сайта Написать письмо