Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как задействовать изменения? [D5, Win95/98]


zsv ©   (2002-10-17 12:47:00) 

Ребята, моя программа изменяет в реестре названия и иконки ярлыков "Мой компьютер", "Сетевое окружение".
Можно ли без перезагрузки компьютера задействовать эти изменения?


zsv   (2002-11-13 09:19:00) [1]

>SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, >SPI_SETNONCLIENTMETRICS, 1);

Это в 98-м не работает...

>Diamond Cat © (11.11.02 22:39)
>для 98
>SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
>как в прочем и для остальных платформ


А для этого, вероятно, подключается модуль?
Какой, если не секрет?
Пишет: "Незнакомая команда"...


Diamond Cat   (2002-11-11 22:39:00) [2]

для 98
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
как в прочем и для остальных платформ


Laim   (2002-11-11 20:30:00) [3]

Если я не ошибаюсь, то для того чтобы изменения реестра вступили в силу сразу, на послать что типа:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 1);


zsv   (2002-11-11 07:18:00) [4]

Вопрос Miker.

>Miker (21.10.02 00:32)
>А это не то?

>SendMessage(FindWindow("Progman", "Program Manager"), >WM_COMMAND, $A065, 0);

А есть то же самое, но для Windows 98?



zsv   (2002-10-24 10:59:00) [5]

>Miker

Это как раз то!
Спасибо.

zsv


Miker   (2002-10-21 00:32:00) [6]

А это не то?

SendMessage(FindWindow("Progman", "Program Manager"), WM_COMMAND, $A065, 0);


TTCustomDelphiMaster   (2002-10-19 11:08:00) [7]

program Project1;
// Обновление рабочего стола

uses
ShlObj, ComObj, ActiveX, Windows;

const
CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";

var
ActiveDesktop: IActiveDesktop;

begin
try
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
ActiveDesktop.ApplyChanges(AD_APPLY_REFRESH or AD_APPLY_FORCE);
ActiveDesktop := nil;
finally
// CoUninitialize; //Здесь почему то возникает ошибка, надо разбираться
end;

end.


esu   (2002-10-19 07:18:00) [8]


> Да...
> Видно, непосильно сложный это был вопрос для мастеров...

Вероятно можно это сделать елегантно, подозреваю, что в explorerе есть такая возможность.
1. А так ищешь процесс explorerа, пришибаешь его, он естественно автоматом перегружается.
2. Мне кажется, что если поставить твою программку в HKLM/Software/Microsoft/Windows/CurrentVersion/Run то и убивать ничего не будет нужно.


zsv   (2002-10-19 05:49:00) [9]

Да...
Видно, непосильно сложный это был вопрос для мастеров...


zsv   (2002-10-18 07:31:00) [10]

Дело в том, что моей программкой пользуюсь только я :-)
Я работаю в компьютерном классе и мне нужен порядок на "Рабочих столах". Согласитесь, что возникают некоторые неудобства, когда я прошу ученика щелкнуть ярлык "Мой компьютер", а он не находит ничего даже похожего...

Моя программа приводит все в порядок, но задействуется все только после перезагрузки, а хотелось бы сразу.

Программа запускается после загрузки Windows, делает изменения, и не хочется сразу же снова делать перезагрузку...


Юрий Зотов   (2002-10-17 14:24:00) [11]

> ZSV

Как Вы считаете, кто-нибудь станет пользоваться Вашей программой?

Если она меняет названия, не спрашивая юзера, то он ее точно выбросит. А если спрашивает, то зачем она вообще нужна? Эти самые названия спокойно меняются мышкой, без всяких программ.


Smithson   (2002-10-17 13:01:00) [12]

Достаточно перезагрузить Explorer (shell, короче). Поищи, тут это уже обсуждалось.


Наверх

Титульная страница Поиск, карта сайта Написать письмо