Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2014, 23:00   #1
NoNameMan
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 21
По умолчанию Refresh Windows Explorer! Как?

Здравствуйте! Уже давно написал программку для скрытия/отображения скрытых файлов и папок. Делал через реестр ("HKCU\Software\Microsoft\Windows\C urrentVersion\Explorer\Advanced" параметр "Hidden"), все работает, но после подмены параметра в реестре необходимо нажать F5 что-бы увидеть результат (при том если нажать F5 на рабочем столе обновится только рабочий стол). Хотелось бы автоматизировать процесс обновления. В гугле искал и очень много, но ничего толкового не нашел! Думаю у винды должен быть API на этот случай, пробовал "SHChangeNotify" но получилось обновить только ассоциации. Подскажите как все таки заставить Explorer считать параметр в реестре и отобразить/скрыть файлы.

Последний раз редактировалось NoNameMan; 12.11.2014 в 23:03.
NoNameMan вне форума Ответить с цитированием
Старый 12.11.2014, 23:39   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

сообщение всем окнам обновить курсоры:
Код:
PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('HKEY_CURRENT_USER\Control Panel\Cursors')));
попробуй заменить здесь ключ реестра на свой.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.11.2014, 01:21   #3
NoNameMan
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
сообщение всем окнам обновить курсоры:
Код:
PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('HKEY_CURRENT_USER\Control Panel\Cursors')));
попробуй заменить здесь ключ реестра на свой.
К сожалению не работает.

Вот код кнопки который я использую:
Код:
uses Registry;

....

procedure TForm1.Button1Click(Sender: TObject);
var reg:TRegistry;
    key:string;
    i:integer;
begin
reg:= TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
key:= 'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced';
if reg.KeyExists(key) then
begin
reg.OpenKey(key, false);
i:= reg.ReadInteger('Hidden');
if i=2 then reg.WriteInteger('Hidden', 1);
if i=1 then reg.WriteInteger('Hidden', 2);
reg.CloseKey;
reg.Free;
end;
end;
NoNameMan вне форума Ответить с цитированием
Старый 13.11.2014, 08:38   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Вот код кнопки который я использую
Чото я не вижу тут вызова
Код:
PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced')));
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.11.2014, 19:41   #5
NoNameMan
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Чото я не вижу тут вызова
Код:
PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced')));
Правильно, код вызова я убрал так-как он не работает. А свой код добавил сюда для наглядности.

Последний раз редактировалось NoNameMan; 13.11.2014 в 19:43.
NoNameMan вне форума Ответить с цитированием
Старый 13.11.2014, 19:53   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Правильно, код вызова я убрал так-как он не работает. А свой код добавил сюда для наглядности.
ну и славненько, ну и хорошо!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.11.2014, 20:13   #7
NoNameMan
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
ну и славненько, ну и хорошо!
Попробовал еще раз, как говориться на всякий. Ничего не обновляется. Что еще можно попробовать?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var reg:TRegistry;
    key:string;
    i:integer;
begin
reg:= TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
key:= 'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced';
if reg.KeyExists(key) then
begin
reg.OpenKey(key, false);
i:= reg.ReadInteger('Hidden');
if i=2 then reg.WriteInteger('Hidden', 1);
if i=1 then reg.WriteInteger('Hidden', 2);
reg.CloseKey;
reg.Free;
PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced')));
end;
end;
NoNameMan вне форума Ответить с цитированием
Старый 13.11.2014, 20:18   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Что еще можно попробовать?
ну найди все окна эксплорера и пошли им кнопку ф5.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.11.2014, 20:34   #9
NoNameMan
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
ну найди все окна эксплорера и пошли им кнопку ф5.
Это, я оставил на крайний случай. Я думаю что у винды есть API на данный случай. Написал сюда в надежде что подскажут именно API.
NoNameMan вне форума Ответить с цитированием
Старый 13.11.2014, 20:42   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от NoNameMan Посмотреть сообщение
Это, я оставил на крайний случай. Я думаю что у винды есть API на данный случай. Написал сюда в надежде что подскажут именно API.
Есть Апи. Читай.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процесс explorer.exe не работает и перегружает ЦП (Windows 7) Npwas Операционные системы общие вопросы 2 19.07.2012 19:43
Интеграция в Windows Explorer Alex217Vish Общие вопросы .NET 2 15.07.2010 19:11
Выделение файлов Windows Explorer Gerzs Общие вопросы Delphi 11 12.10.2009 16:51
Cвой пункты в всплывающем меню Windows Explorer Gerzs Общие вопросы Delphi 12 22.08.2009 19:38
Как отключить WinKey в Windows Explorer? OCTAGRAM Софт 3 29.06.2009 04:51