Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


Копирование содержимого рабочего стола


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
trof
Гость







СообщениеСб, 14-Сен-2002 15:33    Заголовок сообщения: Копирование содержимого рабочего стола
Цитата

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


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеСб, 14-Сен-2002 20:30 
Цитата

Берешь 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
Откуда: Москва
СообщениеВс, 15-Сен-2002 0:56 
Цитата

to DrPass:

ну вот откуда ты это знаешь, блин ?

может ты ясновидящий ? или ты и есть Бил Гейтс это всё если не написавший так придумавший или просто вовремя стащивший ? (как говорилось в одной свежепрочитанной книжке - спасибо изобретателю электронной почты и всем примазавшимся :) )

_________________


http://fotki.yandex.ru/users/vladimir13

С уважением, 13-ый Wink
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеВс, 15-Сен-2002 11:58 
Цитата

Дедуктивный метод :)
_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
zales
Гость







СообщениеПн, 23-Сен-2002 14:46 
Цитата

Скорее индуктивный, ибо Шерлок Холмс, а вернее Конан Дойл, ошибся. LOL
В начало
trof
Гость







СообщениеСр, 25-Сен-2002 12:18    Заголовок сообщения: Копирование рабочего стола
Цитата

Спасибо за ответы. Может я чего не понял, но вот написал код:
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)) - то же самое :(
В начало
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100