Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 157

/ вопрос открыт /

Здравствуйте, эксперты!
У меня вот такой вопрос к вам:
Я хочу сделать на Делфи 7 прогу которая будет делать сриншот с экрана и ставить себе на форму(в окно)в качестве фона этот сриншот десктопа,хотел спросить возможно ли это?
жду ваших советов и предложений.
Заранее благодарю.

Kubanych Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Kubanych (статус: Посетитель)
Вопрос отправлен: 14 мая 2010, 12:57
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: IlluminatI

Здравствуйте, Kubanych!
Кидаешь на форму TImage, в свойстве Align ставишь alClient. В событии формы onCreate пишешь CaptureScreen(Image1.Picture.Bitmap); (код в приложении).

Приложение:
  1. procedure CaptureScreen(ABitmap: TBitmap);
  2. const
  3. CAPTUREBLT = $40000000;
  4. var
  5. hdcScreen: HDC;
  6. hdcCompatible: HDC;
  7. //bmp: TBitmap;
  8. hbmScreen: HBITMAP;
  9. begin
  10. // Create a normal DC and a memory DC for the entire screen. The
  11. // normal DC provides a "snapshot" of the screen contents. The
  12. // memory DC keeps a copy of this "snapshot" in the associated
  13. // bitmap.
  14.  
  15. hdcScreen := CreateDC('DISPLAY', nil, nil, nil);
  16. hdcCompatible := CreateCompatibleDC(hdcScreen);
  17. // Create a compatible bitmap for hdcScreen.
  18.  
  19. hbmScreen := CreateCompatibleBitmap(hdcScreen,
  20. GetDeviceCaps(hdcScreen, HORZRES),
  21. GetDeviceCaps(hdcScreen, VERTRES));
  22.  
  23. // Select the bitmaps into the compatible DC.
  24. SelectObject(hdcCompatible, hbmScreen);
  25. ABitmap.Handle := hbmScreen;
  26. BitBlt(hdcCompatible,
  27. 0, 0,
  28. ABitmap.Width, ABitmap.Height,
  29. hdcScreen,
  30. 0, 0,
  31. SRCCOPY or CAPTUREBLT);
  32.  
  33. DeleteDC(hdcScreen);
  34. DeleteDC(hdcCompatible);
  35. end;


Ответ отправил: IlluminatI (статус: 2-ой класс)
Время отправки: 14 мая 2010, 13:40


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 18 мая 2010, 10:41; участников в обсуждении: 3.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 14 мая 2010, 13:01 [#1]:

Да, возможно :-)
Kubanych

Kubanych (статус: Посетитель), 14 мая 2010, 13:15 [#2]:

супер, а каким образом?
не могли вы мне подсказать главный код.
DNK

DNK (статус: Студент), 14 мая 2010, 13:39 [#3]:

Скриншот в качестве фона для формы. Мне такая дикая идея даже голову не приходила. %-D
"Digital Networked Knight"
DNK

DNK (статус: Студент), 14 мая 2010, 14:26 [#4]:

Другое дело.
"Digital Networked Knight"
Kubanych

Kubanych (статус: Посетитель), 14 мая 2010, 14:30 [#5]:

ну раз узнал мою идею,подскажи как ето сделать.
DNK

DNK (статус: Студент), 14 мая 2010, 18:58 [#6]:

А чем не нравится способ предоставленный IlluminatI?
"Digital Networked Knight"
Kubanych

Kubanych (статус: Посетитель), 18 мая 2010, 10:41 [#7]:

:)Всё вопрос решил.
Спасибо IlluminatI

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.03 сек.