Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 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;


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



Страницы: 1 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.006 c
3-80788
TSV
2002-04-03 20:11
2002.04.25
MIDAS


1-80890
Doctor Deejay
2002-04-14 17:21
2002.04.25
Снова RichEdit


14-81051
lipskiy
2002-03-19 19:16
2002.04.25
Как точно отследить сумму времени, проведенную в инете?


4-81114
SerVS - S
2002-02-18 19:55
2002.04.25
Подскажите плз как вырубить Ctrl+Alt+Del


1-80895
Вика
2002-04-11 10:20
2002.04.25
Как освободить память?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский