Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2007, 16:21   #1
Seqular
Пользователь
 
Аватар для Seqular
 
Регистрация: 16.02.2007
Сообщений: 37
По умолчанию Работа с видеобуфером

Мастера, подскажите, как можно получить содержимое видеобуфера средствами Delphi? Может через DirectX? Или есть еще какой-нибудь способ?
Seqular вне форума Ответить с цитированием
Старый 27.07.2007, 16:34   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Видеопамять отображается с адреса 000a0000, но так было с консольными приложениями. А вообще, видеопамять доступна только для записи.
Carbon вне форума Ответить с цитированием
Старый 27.07.2007, 17:53   #3
Seqular
Пользователь
 
Аватар для Seqular
 
Регистрация: 16.02.2007
Сообщений: 37
По умолчанию

Ну как-то же можно получить то, что сейчас отображается на экране?
Seqular вне форума Ответить с цитированием
Старый 29.07.2007, 17:23   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

если тебе надо узнать адрес видеопамяти то у тебя ничего не получится, это можно сделать только в драйвере режима ядра....
можно получить HDC экрана
вроде так
Canvas.Handle:=GetDC(0);
и потом рисуй на экране что хочешь через Canvas
rpy3uH вне форума Ответить с цитированием
Старый 29.07.2007, 18:49   #5
Seqular
Пользователь
 
Аватар для Seqular
 
Регистрация: 16.02.2007
Сообщений: 37
По умолчанию

Но мне не нужно рисовать на экране! Мне нужно получить то, что сейчас отображается.. Все равно в каком виде. Но желательно в таком, чтобы можно было передавать по сети все изменения в реальном времети. Что-то типа слежения за экраном
Seqular вне форума Ответить с цитированием
Старый 29.07.2007, 22:24   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Print Screen?
Alex21 вне форума Ответить с цитированием
Старый 30.07.2007, 20:26   #7
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

если у тебя канвас связан с эраном, то можно получить цвет пиксела в любой точке экрана
color:=...Canvas.Pixels[x,y]

сфотографировать экран
Код:
const
  Imname='рисунок';

var
  DIR:String='C:';
  Counter:integer=1;
  showmess:boolean=false;


procedure SaveScreenShot;
Var
 DesktopCanvas :TCanvas ;
 BitMap  :TBitMap;

begin
  DesktopCanvas:=TCanvas.Create;
  DesktopCanvas.Handle:=GetDC(Hwnd_Desktop);
  BitMap := TBitMap.Create;
  BitMap.Width := Screen.Width;
  BitMap.Height:=Screen.Height;
  Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect,
  DesktopCanvas, DesktopCanvas.ClipRect);
  BitMap.SaveToFile(DIR+'\'+Imname+inttostr(Counter)+'.bmp');
  Inc(Counter);

  DesktopCanvas.Free;
  BitMap.Free;

end;
rpy3uH вне форума Ответить с цитированием
Старый 31.07.2007, 08:31   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

я тоже думал над таким поразбиратся. Канвас тут вообще не выход ( GDI32 ) тут полюбому нужен DirectX. В теории требуется получить surface десктопа чтобы спокойно его выводить или каждый кадр передавать по куда либо ввиде данных DBI хотя это тоже займет довольно таки на долго процессор, но быстрее способа я лично не знаю, если конечно поразбиратся то видно будет у меня пока такой цели не было
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск