Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.15;
Скачать: CL | DM;

Вниз

Скриншот Рабочего стола   Найти похожие ветки 

 
charoey_mag   (2009-01-26 08:38) [0]

Можно ли получить скриншот "читого" рабочего стола в файл, т.е. без иконок, окон и т.п., если картинка по центру то соответствено картинку и рамку цвета по кругу... . Т.е. катринку того как выглядел бы чистый рабочий стол?


 
AIK ©   (2009-01-26 09:30) [1]

procedure TForm1.Button1Click(Sender: TObject);
var
Bm: TBitmap;
begin
 Bm:= TBitmap.Create;
 Bm.LoadFromFile("C:\Documents and Settings\имя учетки\
            Local Settings\Application Data\Microsoft\Wallpaper1.bmp");
 Form1.Canvas.Draw(0,0,bm);
end;


 
aik ©   (2009-01-26 09:39) [2]

Придумал ещё более удачный вариант
Задать окну Program Manager = SW_HIDE, затем сделать скриншот и опять вернуть окну Program Manager = SW_NORMAL.


 
charoey_mag   (2009-01-26 09:42) [3]


> "C:\Documents and Settings\имя учетки\             Local
> Settings\Application Data\Microsoft\Wallpaper1.bmp"

Это просто сама картинка, а не то что нарисовано. Мне нужен вид рабочего стола


 
aik ©   (2009-01-26 09:45) [4]

Так яж сказал сто поста 2
>  удачный вариант


 
aik ©   (2009-01-26 09:46) [5]

Извеняюсь

>  более удачный вариант


 
{RASkov} ©   (2009-01-26 09:48) [6]

Windows.PaintDesktop()


 
charoey_mag   (2009-01-26 09:57) [7]


> Windows.PaintDesktop()

Спасибо


 
charoey_mag   (2009-01-26 10:31) [8]

Если на форме рисовать то все ок, а если
b:=TBitMap.Create;
b.Width:=Screen.Width;
b.Height:=Screen.Height;
Windows.PaintDesktop(b.Canvas.Handle);
b.SaveToFile("C:\1.bmp");
Form1.Canvas.Draw(0,0,b);
b.Free;

То ничего, белая картинка. Что не так?


 
charoey_mag   (2009-01-26 13:20) [9]

Функция вроде делает то что надо, но несколько своеобразно, она рисует только ту часть рабочего стола над которым находится объект на котором рисуют. Поэтому единственный вариант который придумал, это у окна поставить свойства:
BorderStule = bsNone;
FormStyle = fsStayOnTop;
WindowState = wsMaximize;
При первом OnPaint сохраняю канву в файл, и закрываю приложение.

Вопрос: Нет ли более адекватного способа снять скриншот, ведь не смотря на fsStayOnTop кто-нибудь может залезть поверх и тогда это останется на снимке?


 
Alarm ©   (2009-01-26 14:17) [10]

> charoey_mag   (26.01.09 08:38)

С какого такого бодуна, то, что собираешься получить, ты называешь "скриншотом рабочего стола юзера"?


 
charoey_mag   (2009-01-26 14:36) [11]


> Alarm ©   (26.01.09 14:17) [10]

А как это называется?


 
aik ©   (2009-01-26 15:55) [12]

Как как... так и называется как ты и сказал:

>  скриншот "читого" рабочего стола в файл


Вот придумал гуманный метод, может подойдёт

procedure TForm1.Button1Click(Sender: TObject);
var
 Bit: TBitMap;
 Spisok : TList;
 H :THandle;
 i: Integer;
begin
Spisok:=TList.Create;
Bit:=TBitMap.Create;
Bit.Width := Screen.Width;
Bit.Height:= Screen.Height;

H:=GetWindow(GetDesktopWindow,GW_CHILD);
while H<>0 Do
begin
  if IsWindowVisible(H) then
    Spisok.Add(Pointer(H));
  H:=GetWindow(H,GW_HWNDNEXT);
end;

For I:=0 To Spisok.Count-1 do
  ShowWindow(THandle(Spisok[i]), SW_HIDE) ;

BitBlt(Bit.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
GetDC(GetDesktopWindow), 0, 0, SRCCopy);
Bit.SaveToFile("Screen.bmp");  // Указывается путь к файлу
Bit.Free;

For I:=0 To Spisok.Count-1 do
  ShowWindow(THandle(Spisok[i]), SW_NORMAL) ;

Spisok.Free;

end;


 
aik ©   (2009-01-26 15:58) [13]


> Как как... так и называется как ты и сказал:>  скриншот
> "читого" рабочего стола в файл


упс не до выделил

>  скриншот "читого" рабочего стола в файл, т.е. без иконок,
>  окон и т.п.


 
charoey_mag   (2009-01-27 07:43) [14]

Вариант [12] не лучше чем [9], так как программа встает в автозагрузку, и в момент между "скрыть все окна" -"показать все окна" могут появиться новый окна



Страницы: 1 вся ветка

Текущий архив: 2009.03.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
15-1231101557
DillerXX
2009-01-04 23:39
2009.03.15
Кодирование DVD-video


15-1231595136
Slider007
2009-01-10 16:45
2009.03.15
С днем рождения ! 10 января 2009 суббота


15-1231270757
KilkennyCat
2009-01-06 22:39
2009.03.15
Забавные часы


15-1231254171
Palladin
2009-01-06 18:02
2009.03.15
Конструкция языка JavaScript


15-1231365013
dmk
2009-01-08 00:50
2009.03.15
Vista64 и X58