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

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

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

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

  • Автор темы Автор темы Olya
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
70
Баллы
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;

В чем может быть ошибка?
И как исправить?
 
Скриншот Формы
Код:
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;
 
Все равно не работает,так же как и раньше до запуска потока можно сделать,а вовремя и после остановки нельзя.
Сменила код на ваш,такая же история.(что и с моим кодом).

Может быть из-за того что я делаю не самой формы,а GroupBox!
который взаимодействует с потоком?
 
ну наверно, если окно не активно то и код невыполняется
 
Переписала код,все нормально теперь,только на рабочий стол идет скриншот,
не получается папку прикрутить для скриншотов,которая рядом с программой находится,
создается папка,а скриншоты идут на рабочий стол.
 
так укажи путь куда они должны записыватся
 
Естественно я указываю,но почему то идет взаимодействие с рабочем столом,
и выдает ошибку,мол по адресу рабочего стола нет такой папки.
Я папку создаю возле своей программы.
Мне нужно в нее положить скриншот.
 
Я больше не могу предсказывать, не знаю почему.Rauchend
 
Плохо)
Даже тот код что давал,указываю путь своей папки выкидает на рабочий стол скриншот
 
Код:
I.SaveToFile('test.jpeg');
попробуй тут поменять к примеру: C:\jpg\test.jpeg
 
Вот пробуй , у меня всё работает pointing
 

Вложения

  • S.zip
    S.zip
    3.2 МБ · Просмотры: 4
Хорошо попробую,спасибо!
Завтра посмотрю.
 
Спасибо за помощь,нашла свою ошибку)
Путь прописался с ошибкой.
Можно тему закрывать!
 
Статус
Закрыто для дальнейших ответов.
Вверх Снизу