| Автор
| Сообщение |
|
|
|
Цитата |
|
Привет.
У меня такая проблема: нужно скопировать обои рабочего стола с иконками (или хоть только обои).
Пробовал GetDesktopWindow и потом BitBlt - копирует всё, вместе с открытыми окнами, а нужно без окон (сижу под ХР).
Если кто знает, как скопировать - помогите плиз.  |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Берешь WinSight и смотришь. И видишь: есть окно Explorer, которое закрывает весь экран. Хорошо, но не то. Смотришь дальше, у окна есть дочернее окно с мудреным названием, имеющее размеры рабочей области (т.е. без Панели задач). Еще лучше, но все еще не то. Наконец, у этог окна тоже есть дочернее окно, имеющее класс Какой_то_там_ListView - вот это то, что нам нужно.
| Код: | var
h:thandle;
...
h:=findwindow('Progman','Program Manager');
h:=findwindowex(h, 0, nil,nil);
h:=findwindowex(h, 0, nil,nil); |
_________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 13-ый
Администратор

Возраст: 35
Знак зодиака: 
Зарегистрирован: 28.04.2002
Сообщения: 3551
Откуда: Москва
|
|
|
Цитата |
|
to DrPass:
ну вот откуда ты это знаешь, блин ?
может ты ясновидящий ? или ты и есть Бил Гейтс это всё если не написавший так придумавший или просто вовремя стащивший ? (как говорилось в одной свежепрочитанной книжке - спасибо изобретателю электронной почты и всем примазавшимся ) _________________
http://fotki.yandex.ru/users/vladimir13
С уважением, 13-ый  |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Дедуктивный метод  _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Скорее индуктивный, ибо Шерлок Холмс, а вернее Конан Дойл, ошибся.  |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Спасибо за ответы. Может я чего не понял, но вот написал код:
var
H:HWND;
Src,Dst:HDC;
begin
H:=FindWindow('Progman','Program Manager');
if (H=0) then
ShowMessage('Error');
H:=FindWindowEx(H,0,'SHELLDLL_DefView','');
if (H=0) then
ShowMessage('Error');
H:=FindWindowEx(H,0,'SysListView32','FolderView');
if (H=0) then
ShowMessage('Error');
{ H:=FindWindowEx(H,0,'Internet Explorer_Server','');
if (H=0) then
ShowMessage('Error');}
Src:=GetDC(H);
Dst:=GetDC(Handle);
BitBlt(Dst,0,0,100,100,Src,0,0,SRCCOPY);
ReleaseDC(Handle,Dst);
ReleaseDC(H,Src)
end;
Так вот это всё работает без ошибок, но на форму всё равно копирует окно Delphi (запускаю из-под него и его окно - верхнее).
Пробовал и так, как вы писали (т.е. H:=FindWindowEx(H,0,nil,nil)) - то же самое  |
|
| В начало |
|
 |
|