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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2010, 11:10   #1
Streetmagic
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 10
По умолчанию Зациклился ScreenShot

Вообщем простая программа для создания скриншотов
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(Handle, SW_HIDE);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
TitleName: string;
lpItemID: PItemIDList;
BrowseInfo: TBrowseInfo;
DisplayName: array[0..MAX_PATH] of char;
begin
Form1.Show;
ShowWindow(Handle, SW_SHOW);
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Выберите папку';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then
begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
end;
//SDia.Execute;
//catalog:=GetCurrentDir;
catalog:=TempPath;
//Application.ShowMainForm:=false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if getasynckeystate(ord('8'))<>0 then begin   // Проверка нажата ли клавиша
  // Если клавиша 8 нажата, то будим делать скрин
  i:=i+1;  // Текущий номер скрина
  BitMap := TBitMap.Create;   // Инициализируем новое изображение
  BitMap.Width := Screen.Width;     // Определяем длину,
  BitMap.Height := Screen.Height;     // и ширину окна чтобы узнать размеру области, которую мы будим копировать
  BitBlt(BitMap.Canvas.Handle, 0, 0,
  BitMap.Width, BitMap.Height,
  GetDC(0), 0, 0, SRCCOPY);    // Скопировали
  SaveJpeg := TJpegImage.Create;  // Теперь создаём новую картинку
  SaveJpeg.Assign(BitMap);           // Открываем

  SaveJpeg.CompressionQuality:=CompressionBar.Position;  
  SaveJpeg.PixelFormat := jf24Bit;
  SaveJpeg.Compress; 
  SaveJpeg.SaveToFile(catalog+'/'+IntToStr(i)+'.jpg'); // Скидываем изображение в файл
  BitMap.Destroy; // Очищаем буфер битмапа
  SaveJpeg.Destroy; //обнуляем картинку
end
else

if getasynckeystate(ord('1'))<>0 then
Form1.OnCreate(Form1);
end;
То есть по нажатию кнопки 8 будет создан скрин,по нажатию клавиши 1,что вроде Нового проекта,то есть снова запускается окно выбора папки,запускается форма(на ней только TrackBar и кнопка ок).
При нажатии 1 программа зацикливается постоянно открывается окно выбора папки.Помогите где какую метку надо сделать или условие,а то не могу понять где ошибка.
Streetmagic вне форума Ответить с цитированием
Старый 10.04.2010, 17:42   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Используйте procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); И ещё вот тут
Код:
else

if getasynckeystate(ord('1'))<>0 then
Form1.OnCreate(Form1);
Else уберите, он впринципе не нужен.
А если интересует как определить была ли нажата клавиша, то вот:
Код:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If key=#27 then //что-нибудь делаем;
end;
Таблицу с кодами кнопок можно найти в интернете.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 10.04.2010 в 17:45.
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Screenshot W0LF Общие вопросы Delphi 4 10.10.2009 00:47
Игра:"ScreenShot" Levsha100 Свободное общение 30 03.06.2009 18:10
screenshot nicky Общие вопросы C/C++ 2 12.04.2009 14:12
Программа Magic Screenshot - простейший способ обменяться скриншотами roverspam Софт 0 17.09.2008 23:07