Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Рабочий стол
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.06.2006, 19:00
koder0 koder0 вне форума
Прохожий
 
Регистрация: 30.06.2006
Сообщения: 5
Репутация: 10
По умолчанию Скринсшот рабочего стола

Привет всем.
У меня появилась вот такая запинка:
Как можно получить картинку текущего состояния рабочего стола виндовс (ну все что видет юзверь). Желательно код показать, но и советам буду рад.
Зарание благодарю за ответы.
Ответить с цитированием
  #2  
Старый 30.06.2006, 23:27
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Вот пример сохранения скриншота рабочего стола в файл:

Код:
procedure GetWindowsScreen( PathToSave: string );
begin
   with TBitmap.Create do
   begin
      Width := Screen.Width;
      Height := Screen.Height;
      BitBlt( Canvas.Handle, 0, 0, Width, Height, GetDC( GetDesktopWindow ), 0, 0, SRCCOPY );
      SaveToFile( PathToSave );
      Free;
   end;
end;

Использование:
Код:
GetWindowsScreen( 'C:\Screen.bmp' );
Ответить с цитированием
  #3  
Старый 01.07.2006, 00:35
koder0 koder0 вне форума
Прохожий
 
Регистрация: 30.06.2006
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо, попробую.
Ответить с цитированием
  #4  
Старый 31.07.2006, 23:10
RUS_Hacker RUS_Hacker вне форума
Новичок
 
Регистрация: 23.07.2006
Сообщения: 54
Репутация: 10
По умолчанию

А ещё можно сделать так :
procedure TForm1.Button1Click(Sender: TObject);
var
BMP1: Graphics.TBitmap;
begin
Screen1.Visible:=false;
sleep(15);
BMP1:=Graphics.TBitmap.Create;
BMP1.Height:=Screen.Height;
BMP1.Width:=Screen.Width;
DC1:=GetDC(0);
BitBlt(BMP1.Canvas.Handle, 0, 0, Screen.Width,
Screen.Height, DC1, 0, 0, SRCCOPY);
Screen1.Visible:=true;
Image1:= TImage.Create(nil);
BMP1.IgnorePalette:=true;
Image1.Picture.Assign(BMP1);
BMP1.SaveToFile('FileName.bmp');
end;
Ответить с цитированием
  #5  
Старый 20.05.2008, 19:16
Аватар для Casper-Hacker
Casper-Hacker Casper-Hacker вне форума
Начинающий
 
Регистрация: 19.05.2008
Сообщения: 147
Версия Delphi: x
Репутация: 15
По умолчанию

          

Последний раз редактировалось Casper-Hacker, 22.03.2014 в 16:00.
Ответить с цитированием
  #6  
Старый 04.01.2009, 12:35
cool_rus_killer cool_rus_killer вне форума
Прохожий
 
Регистрация: 04.01.2009
Сообщения: 1
Репутация: 10
По умолчанию

А кто знает, как сделать скриншот неактивного рабочего стола?

Пытался сделать следующим образом:
1. Создаю поток.
2. В этом потоке открываю рабочий стол (dsk = OpenDesktop(..))
3. Назначаю потоку этот рабочий стол (SetThreadDesktop(dsk))
4. Далее, в этом потоке действую как было описано выше (..BitBlt...)

Результат:
Если я открываю активный рабочий стол, то скриншот получается.
Если же открываю другой рабочий стол, то получается сплошная чернота. При этом BitBlt возвращает false и GetLastError = 6 (Неверный дескриптор).

Вот. Кто-нибудь знает, как можно это исправить и возможно ли вообще у неактивного рабочего стола снять скриншот?

Последний раз редактировалось cool_rus_killer, 04.01.2009 в 12:44.
Ответить с цитированием
  #7  
Старый 04.01.2009, 13:42
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Decoding, RUS_Hacker, вас вообще учили учил контексты освобождать?!!!!!
По поводу неактивного рабочего стола. Можно получить например картинку обоев, и положения иконок которые благополучно отобразить. Возможно все эти менеджеры рабочих столов делаю именно так при загрузке windows (все рабочие столы ведь пустые) а потом перед переключением просто делаю снимок с пока еще активного рабочего стола.
__________________
...сказал, и загрустил от бесспорной своей правоты

Последний раз редактировалось 0nni, 04.01.2009 в 13:48.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter