![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Видюха и моя программа
Сергей Николаев © (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]Что значит перехватить. Видюха на монитор выдает аналоговый сигнал, который тот собствено и воспроизводит - как ты себе представляешь программный перехват аналога и его использование?