• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

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

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Помощь в коде Скриншот

Статус
Закрыто для дальнейших ответов.
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Здравствуйте!
Такая проблема у меня возникла.
Перед запуском программы я сделать могу скриншот моей программы,а когда запускаю поток,
сделать не возможно,и после остановки потока не делается.
Вот код:

Код:
begin
 try
   CreateDir(ExtractFilePath(Application.ExeName)+'Sckrin');
  begin
   GetScreenDC := GetwindowDC(Form1.sStatImage.Handle); 
   GetScreenBMP:= TBitmap.Create;  
   GetScreenBMP.Width:=Form1.sStatImage.Width;
   GetScreenBMP.Height:=Form1.sStatImage.Height;
   bitblt(GetScreenBMP.Canvas.Handle, 0, 0, Form1.Width, Form1.Height,GetScreenDC, 0, 0, SRCCOPY);
   DateTimeToString(filename, 'yymmddhhnnss', Now);
   getscreenbmp.SaveToFile('Sckrin\'+filename+'.bmp');
   BmpToJpeg('Sckrin\'+filename+'.bmp', 'Sckrin\'+filename+'.jpg');
   GetScreenBMP.Free;
  end;
 finally
ShowMessage('Скриншот готов');
 end;
В чем может быть ошибка?
И как исправить?
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Скриншот Формы
Код:
var
B: TBitmap;
I: TJpegImage;
DC: hDC;
begin
B := TBitmap.Create;
try
DC := GetDC(hWnd_Desktop);
try
B.Width := Form1.Width;
B.Height := Form1.Height;
// do Screenshot as Bitmap
BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height,DC, Form1.Left, Form1.Top, SRCCOPY);
finally
ReleaseDC(DC, hWnd_Desktop);
end;
// convert Bitmap to JPEG than save it
I := TJpegImage.Create;
try
I.Assign(B);
I.SaveToFile('test.jpeg');
finally
I.Free;
end;
finally
B.Free;
end;
end;
Скриншот рабочего стола
Код:
var
B: TBitmap;
I: TJpegImage;
DC: hDC;
begin
B := TBitmap.Create;
try
DC := GetDC(hWnd_Desktop);
try
B.Width := Screen.Width;
B.Height := Screen.Height;
// do Screenshot as Bitmap
BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);

finally
ReleaseDC(DC, hWnd_Desktop);
end;
// convert Bitmap to JPEG than save it
I := TJpegImage.Create;
try
I.Assign(B);
I.SaveToFile('test.jpeg');
finally
I.Free;
end;
finally
B.Free;
end;
end;
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Все равно не работает,так же как и раньше до запуска потока можно сделать,а вовремя и после остановки нельзя.
Сменила код на ваш,такая же история.(что и с моим кодом).

Может быть из-за того что я делаю не самой формы,а GroupBox!
который взаимодействует с потоком?
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
ну наверно, если окно не активно то и код невыполняется
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Переписала код,все нормально теперь,только на рабочий стол идет скриншот,
не получается папку прикрутить для скриншотов,которая рядом с программой находится,
создается папка,а скриншоты идут на рабочий стол.
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
так укажи путь куда они должны записыватся
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Естественно я указываю,но почему то идет взаимодействие с рабочем столом,
и выдает ошибку,мол по адресу рабочего стола нет такой папки.
Я папку создаю возле своей программы.
Мне нужно в нее положить скриншот.
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Я больше не могу предсказывать, не знаю почему.Rauchend
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Плохо)
Даже тот код что давал,указываю путь своей папки выкидает на рабочий стол скриншот
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Код:
I.SaveToFile('test.jpeg');
попробуй тут поменять к примеру: C:\jpg\test.jpeg
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Вот пробуй , у меня всё работает pointing
 

Вложения

  • 3.2 МБ Просмотры: 4
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Хорошо попробую,спасибо!
Завтра посмотрю.
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Спасибо за помощь,нашла свою ошибку)
Путь прописался с ошибкой.
Можно тему закрывать!
 
Статус
Закрыто для дальнейших ответов.
Вверх Снизу