Текущий архив: 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.47 MB
Время: 0.043 c