Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 558

Профиль | Отправить PM | Цитировать


Цитата Kopejkin:
В общем, не знаю, как правильно пояснить.
Может маленькое видео поможет. »
Да, лажа на видео... Но у меня на восьмёрке вроде как всё нормально происходит. Если можно назвать нормальным, явную задержку при перерисовке стола...

Я пробовал разные утилитки, предназначенные специально для рестарта - всё в целом одно и то же - тормоза и визуально ужасно...

Например, : RestartExplorer ( Author Winaero )
Performs a graceful restart of the Explorer shell in Windows 10, 8, 7 and Vista. Explorer will save your preferences, i.e. icons order on Desktop and then restart.
http://winaero.com/download.php?view.1783

http://www.nirsoft.net/utils/restart_explorer.html

RightClick Restart Explorer http://www.thewindowsclub.com/right-...o-context-menu

Кстати, лучше всех отрабатывает батник, вообщем такой же что я уже тебе давал + организована пинг-задержка :

Цитата:
echo off
mode 72,3
title Explorer Restart - v1.3
if exist TEMP_FILE goto erro_1
echo Security to not open two Explorer Restart>TEMP_FILE
taskkill /F /IM explorer.exe >NUL
echo Explorer Closed, Starting...
ping 127.0.0.1 >NUL
start %systemroot%\explorer.exe
del TEMP_FILE
echo Explorer restarts, wait few seconds for this window closes.
ping 127.0.0.1 >NUL
exit
:erro_1
echo Already have an Explorer Restart In Progress.
ping 127.0.0.1 >NUL
exit
На винампе предложили такой код :

Цитата:
!include LogicLib.nsh
!include WinMessages.nsh

Name RestartExplorer
OutFile RestartExplorer.exe
RequestExecutionLevel user
ShowInstDetails show

!macro _IsWindow _a _b _t _f
IsWindow `${_b}` `${_t}` `${_f}`
!macroend
!define IsWindow `"" IsWindow`

!macro RestartExplorer
Push $R0
Push $R1
FindWindow $R0 Shell_TrayWnd
${If} ${IsWindow} $R0
IntOp $R1 ${WM_USER} + 436
System::Call `user32::PostMessage(i R0, i R1, i 0, i 0)`
${For} $R1 1 20
Sleep 1000
FindWindow $R0 Shell_TrayWnd
${IfNot} ${IsWindow} $R0
Exec `"$WINDIR\explorer.exe"`
${Break}
${EndIf}
${Next}
${EndIf}
Pop $R1
Pop $R0
!macroend

Section Main
!insertmacro RestartExplorer
SectionEnd
Только всё это - один хрен... Тормоза и визуально не красиво...

(Про не отображение эксплорера плагином, автор пока ничего не сказал...)

Почитав разную инфу про установку-удаление занятых DLL без перезагрузки компа или эксплорера, я пришёл к выводу, что идея эта - очень плохая... Отбирать у Винды, удерживаемый ей файл - всё равно , что отбирать у ребёнка конфету. Крику и слёз не оберёшься...
Лучше отложенного удаления "занятых" файлов, после ближайшей перезагрузки, ничего не придумано... А если и придумано, то держится в великом секрете...

(есть ещё экзотика с манипуляцией помещения файлов в память и чего то там ещё, но это для крутых программеров..)

Ну и ещё используется вариант - подмена исходных файлов на нужные, с переименованием исходных . Это дело известное и похоже, самое эффективное...

Также можно использовать сторонние утилитки типа inuse.exe или MoveFile
Цитата:
Inuse.exe предоставляет пользователям и администраторам возможность оперативно заменять файлы, которые в данный момент используются операционной системой.
http://download.microsoft.com/downlo...N-US/inuse.exe
Цитата:
Программы PendMoves (версия 1.2) и MoveFile (версия 1.01)
Автор: Марк Руссинович (Mark Russinovich)
http://technet.microsoft.com/ru-ru/s.../bb897556.aspx

Последний раз редактировалось MKN, 03-12-2014 в 12:07.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:37, 03-12-2014 | #1396