Форум: "Потрепаться";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
ВнизСделать скриншот чистого рабочего стола. Найти похожие ветки
← →
pasha_golub (2003-12-01 18:21) [0]Чистый рабочий стол - это стол без окон, а только с ярлычками и значками. Идея проста, сворачиваем все окна, а потом делаем скриншот, ну и соответственно разворачиваем обратно. Но хочется как-то элегантней без сворачивания окон, чтобы по возможности для пользователя это было не напряжно. На данный момент олгоритм в крупных коммандах таков.
1. Свернуть окна.
2. Сделать скриншот стола.
3. Развернуть.
Хотелось бы 1 и 3 не делать, вообще думаю вопрос понятен.
← →
VictorT (2003-12-01 18:56) [1]Может попробовать вместо сворачивания окон попробовать их скрывать (ShowWindow(SW_HIDE)), чтоб не происходило анимированное сворачивание, процесс быстрее пройдёт, менее заметно для пользователя.
← →
Rouse_ (2003-12-01 19:35) [2]А можно создать битмап на него поместить сами обои, пройтись по иконкам, узнать их местоположение и отрисовать на битмапе.
Как это делается - есть у Рихтера...
Желаю успехов
← →
Дремучий (2003-12-01 21:59) [3]может быть так?
1. получить доступ к канвасу десктопа
2. скопировать с канваса битмап в свой битмап
3. сохранить свой битмап
← →
pasha_golub (2003-12-02 10:45) [4]2VictorT
Попробую
2Rouse_
Интересная идея, спасибо
2Дремучий
Делаю так
var Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetDC(0);
//тут копирую
finally
Canvas.free;
end;
end;
Такой код копирует вместе с изображением окон. Может имелось в виду по-другому?
← →
SPeller (2003-12-02 11:08) [5]
> Дремучий © (01.12.03 21:59) [3]
> может быть так?
>
> 1. получить доступ к канвасу десктопа
> 2. скопировать с канваса битмап в свой битмап
> 3. сохранить свой битмап
Все окна являются дочерними десктопа, поэтому и рисунок канвы десктопа будет с этими окнами. Можно попробовать перехватить сообщение WM_PAINT и подсунуть свой контекст для отрисовки.
← →
pasha_golub (2003-12-02 11:25) [6]2SPeller
У чего перехватывать? У десктопа? Поподробней, если можно, пожалуйста.
← →
DVM (2003-12-02 12:21) [7]PaintDesktop - но это без иконок.
← →
pasha_golub (2003-12-02 15:06) [8]2DVM
Да, действительно отмалевывает. Спасибо, функция какая-то скрытная, в хелпе нету, пришлось в MSDN лезть.
← →
pasha_golub (2003-12-02 17:34) [9]Ну тоды разрешите задать вопрос глобальней. Каким образом сделать скриншот, низлежащего окна, то есть перекрытого другими окнами, не меняя порядок расположения окон. То есть окно как было перекрыто другими, так и остается.
Общая задача такова. Надо сделать скриншоты всех окон на рабочем столе, но не причиняя неудобства пользователю, без перестановок, морганий и прочего.
← →
han_malign (2003-12-02 18:04) [10]Может это:
The WM_PRINT message is sent to a window to request that it draw itself in the specified device context, most commonly in a printer device context.
WM_PRINT
hdc = (HDC) wParam;
uFlags = lParam;
Parameters
hdc
Identifies the device context to draw in.
uFlags
Specifies the drawing options. This parameter can be one or more of these flags:
Value Meaning
PRF_CHECKVISIBLE Draw the window only if it is visible.
PRF_CHILDREN Draw all visible children windows.
PRF_CLIENT Draw the client area of the window.
PRF_ERASEBKGND Erase the background before drawing the window.
PRF_NONCLIENT Draw the nonclient area of the window.
PRF_OWNED Draw all owned windows.
← →
pasha_golub (2003-12-03 09:58) [11]2han_malign
Спасибки, может и оно. Ща проверю
← →
pasha_golub (2003-12-03 13:41) [12]
procedure TForm1.Button1Click(Sender: TObject);
var
lP: Cardinal;
begin
lP := PRF_CHILDREN or PRF_CLIENT or
PRF_NONCLIENT or PRF_OWNED;
SendMessage(Handle,WM_PAINT,Image1.Canvas.Handle,lP);
end;
Вот таким вот образом пробовал. Не вышло, однако. Есть подозрение, что сообщение это никто не обрабатывает. Рылся в VCL, искал обработчик - не нашел. Вот не пойму я чего-то.
← →
REA (2003-12-03 14:36) [13]The PrintWindow function copies a visual window into the specified device context (DC), typically a printer DC
This function is similar to WM_PRINT. Before calling PrintWindow, first select a bitmap into hdcBlt.
← →
REA (2003-12-03 14:37) [14]упс. W98 unsupported
← →
pasha_golub (2003-12-03 17:21) [15]2REA
Все равно спасибо. Взгляну
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c