Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
6-1200778609
VoV_I_K
2008-01-20 00:36
2009.03.15
Как передать событие из Jscript в приложение?


2-1232460703
аврам
2009-01-20 17:11
2009.03.15
http cookies


15-1231668190
Leshiy
2009-01-11 13:03
2009.03.15
Backup/restore через удаленный рабочий стол


15-1231505816
Кое кто
2009-01-09 15:56
2009.03.15
На каких языках сейчас программируют?


15-1232171080
KilkennyCat
2009-01-17 08:44
2009.03.15
Специально для Б





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский