Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2007, 17:57   #1
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
Стрелка Снимок экрана

Хочу сделать прогу, которая будет делать снимок с экрана каждые 0,5 сек, и сохранять каждый снимок в файл. Подскажите, как это можно организовать!
Viteef вне форума Ответить с цитированием
Старый 14.05.2007, 19:18   #2
LEKA
Пользователь
 
Регистрация: 27.04.2007
Сообщений: 17
По умолчанию

Есть такой вариант как делать что то типа:
Таймер на 0.5с
1.Эмуляция нажатия Prt Scr(уже есть в буфере)
2.Передача буфера в файл.
3.Созданение файла.
Есстественно это только теория как органзовать это , не понятно даже мне самому= ))
LEKA вне форума Ответить с цитированием
Старый 14.05.2007, 20:11   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,805
По умолчанию

вот
Код:
var
  Desktopcanvas :TCanvas ;
 BitMap  :TBitMap;
begin

 //n 001
  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('c:\windows\screen.bmp');
 //k 001
 image1.Picture.LoadFromFile('c:\windows\screen.bmp');
rpy3uH вне форума Ответить с цитированием
Старый 14.05.2007, 20:38   #4
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

А можно что б сохранялось в JPEG, а то bmp'шники каждый по 3 Мб...
Может оно и не успеет каждые 0,5 сек записать такой файлик.
Viteef вне форума Ответить с цитированием
Старый 14.05.2007, 20:47   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,805
По умолчанию

класс TJPEGImage в модуле JPEG с ним поковыряйся, насколько я помню вместо TBitmap использовать надо
rpy3uH вне форума Ответить с цитированием
Старый 14.05.2007, 21:07   #6
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
Стрелка

Спасибо, но хорошо бы еще что б во время снимка указатель крысы был бы виден и можно было бы ее остановить в любой момент.

Последний раз редактировалось Viteef; 15.05.2007 в 17:19.
Viteef вне форума Ответить с цитированием
Старый 15.05.2007, 20:09   #7
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,805
По умолчанию

что такое крыса?
rpy3uH вне форума Ответить с цитированием
Старый 16.05.2007, 13:14   #8
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
что такое крыса?
"крысой" называют указатель мыши (курсор проще говоря )

наскоко я знаю курсор динамически перерисовівается, поэтому его тяжело зафиксировать, попробуй "дорисовывать" его в ручном режиме:
1: узнаем положение курсора

var P:TPount;
begin
GetCursorPos(P);
end;

2: рисуем курсор
DrawIcon(Image1.Canvas.Handle, P.X,P.Y, HIcon);
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 16.05.2007, 17:33   #9
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Не дорисовывает, может DrawIcon в другом месте дописать?
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Desktopcanvas :TCanvas ;
BitMap :Tbitmap;
nom:longint;
tagg:integer;
P:TPoint; hc:HICON;
begin
for tagg:=0 to 10 do
begin
nom:=nom+1;
GetCursorPos(p);
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);
DrawIcon(image1.Canvas.Handle,p.X,p.Y,Hc);
bitmap.SaveToFile('c:\scr\'+inttostr(tagg)+'.bmp');
image1.Picture.LoadFromFile('c:\scr\'+inttostr(tagg)+'.bmp');
end;
end;
Viteef вне форума Ответить с цитированием
Старый 16.05.2007, 20:12   #10
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,805
По умолчанию

можно сначала сохранить положение курсора, потом переметить его в нижний правый угол, сделать снимок, потом переметить на место
rpy3uH вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать снимок экрана? Briz Общие вопросы Delphi 28 10.04.2013 16:29
Разрешение экрана Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 28.05.2008 23:17
Пределы экрана Манжосов Денис :) Общие вопросы Delphi 6 01.05.2008 10:58
Разрешение экрана -=<[Evklidd]>=- Общие вопросы Delphi 1 20.02.2008 10:55
Как сделать снимок экрана в графическом режиме? Борис2 Паскаль, Turbo Pascal, PascalABC.NET 9 08.12.2007 21:07