Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Вниз

Работа с Desktop 


Mover   (2002-02-19 10:58) [0]

Всем привет!
Если не затруднит, прошу знающих ответить на следующие вопросы:
1. - Как узнать, что включен Active Desktop? А так же отключить его при необходимости...
(ключика в реестре HKCU\Software\Microsoft\CurrentVersion\Policies\Explorer\NoActiveDesktop нет, проверял! Хотя сам Explorer его ищет, судя по RegMonitor).
2. - Как менять цвет фона у простого и у активного десктопа?
Меня не устраивает всем известное решение:

H1:=FindWindow("Progman",nil);
H1:=FindWindowEx(h1, 0, nil, nil);
H1:=FindWindowEx(h1, 0, nil, nil);
if H1<>0 then begin
SetLength(S, 40);
GetClassName(h1, PChar(S), 39);
if PChar(S) = "SysListView32" then begin
// Выберем случайный цвет
Red:=Random(100);
Green:=Random(100);
Blue:=Random(100);
C1:=$00010000*Blue+$00000100*Green+$00000001*Red;
ListView_SetBkColor(H1, C1);
end;
end;

так как оно не работает без рефреша, а установка фоновой картинки сбивает настройки и возвращает прошлый цвет фона.

PS. Облазил все форумы и FAQ... =( Нигде ничего или я плохо искал.



VuDZ   (2002-02-19 13:16) [1]

а как на счёт поискать в реестре? там есть это всё - и цвет, и фоновая картинка...



Mover   (2002-02-19 13:47) [2]

2 VuDZ:
Понимаешь... Просто у меня нет времени заниматься исследованиями реестра! =) Загнеться форум с такими "ответами"...
Кстати, вот надыбал:

HKCU\Control Panel\Colors (Background)
HKCU\Control Panel\Desktop (Wallpaper, TileWallpaper)

Картинку обновить - нет проблем! Но вот с цветом - это лажа какая-то. Реестр обновляй не обновляй, рабочий стол не реагирует.
Цвет остается старым до перезагрузки.

2All: С Active Desktop"ом кто-то работал?



Pete   (2002-02-19 16:07) [3]

2 Mover:

А я сюда за ответами редко обрашаюсь. Просто интересно умных людей послушать... Мне кажется читает в несколько раз народу больше, чем отвечает и спрашивает...
А на счет того, что нет времени (или просто лень) изучать, так это зря... Интересно самому "победить" проблему...



SerVS - S   (2002-02-19 16:27) [4]

Десктоп имеет IActiveDesktop. Я задавал это вопрос недельки две назад, посмотри там пример есть.



Mover   (2002-02-19 16:40) [5]

Окей, не лень, просто нет времени... Скоро залью новую версию Wallpaper (v0.6) в Кладовку// Программы, там все о чем я спрашивал сам же и реализовал.
Одно вот пока только не нашел, как обновлять рабочий стол после установки нового Background Color... А то бы еще и его менял! =)



Raptor   (2002-02-19 22:12) [6]

Вот-вот, SerVS - S првильно говорит. Поищи по ключу IActiveDesktop на этом форуме. Я уже раза 2 или 3 отвечал здесь на подобные вопросы. Или ищи в MSDN описание интерфейса IActiveDesktop.



Mover   (2002-02-20 12:28) [7]

Нет, Raptor! Я спрашиваю одно, получаю другое.
Мне не надо код, КАК МЕНЯТЬ ФОН ДЛЯ ActiveDesktop.
Это я и так знаю... =) Вопрос: КАК ОПРЕДЕЛИТЬ, ВКЛЮЧЕН ИЛИ ВЫКЛЮЧЕН ActiveDesktop?!! Так вот, оказалось все очень сложно и запутано, но я проанализировал в реестре бинарный ключик ShellState - это единственное, что менялось. И оказалось, что в 5 байте 2 битик слева указывает как раз на галочку "Отображать содержимое, как Web-страницу". Вот код:

function Get_Active_Desktop: Boolean;
var
Buff: array [0..27] of Byte;
begin
Result:=False;
with TRegistry.Create do
try
bActive:=False;
RootKey:=HKEY_CURRENT_USER;
if OpenKey("\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer", False) then begin
// Определим состояние Desktop "Отображать, как Web-страницу"
ReadBinaryData("ShellState", Buff, SizeOf(Buff));
Result:=(Buff[4] and $40) <> 0;
CloseKey;
end;
finally
Free;
end;
end;


Спасибо за внимание... =)
Кстати, если кто расскажет, как менять цвет фона в обоих случаях, напишите письмом - буду очень признателен!




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.026 c
14-81065          Ajax                  2002-03-19 19:28  2002.04.25  
Delphi 5 и WinXP


1-80968           Rat King              2002-04-08 11:08  2002.04.25  
Технология Plug-Insов


1-81007           Sound                 2002-04-12 11:09  2002.04.25  
Как поставить NMHTTP?


1-80918           Ascan                 2002-04-11 14:56  2002.04.25  
программный


7-81100           Alex622               2002-01-29 11:46  2002.04.25  
Две мыши