Да рефрешнем shell-а
2 отговора
99 прегледа
Да рефрешнем shell-а
Ми значи, аз разработвам една програма за настройки на Windows и понякога, за да заработи някоя промяна - трябва да се рефрешне explorer-a.
Сигурен съм, че има някоя АПИ функция, ама немога да я намеря!
Сигурен съм, че има някоя АПИ функция, ама немога да я намеря!
Re: Да рефрешнем shell-а
Не става ли да килнеш Explroer.exe и да го стартираш пак ? :))
Re: Да рефрешнем shell-а
Това не съм го пробвал (така че не знам какъв ще бъде крайният резултат), защото нямам време да се занимавам с глупости:
Declare Sub SHChangeNotify Lib "shell32" (ByVal wEventId As Long, _
ByVal uFlags As Long, ByVal dwItem1 As Any, ByVal dwItem2 As Any)
Public Const SHCNE_UPDATEDIR = &H1000
Public Const SHCNF_IDLIST = &H0
Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, _
pidl As Long) As Long
Public Const NOERROR = 0
Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Public Function UpdateShellFolder(nFolder As Long) As Boolean
Dim pidl As Long
UpdateShellFolder = False
If (SHGetSpecialFolderLocation(0, nFolder, pidl) = NOERROR) Then
SHChangeNotify SHCNE_UPDATEDIR, SHCNF_IDLIST, pidl, 0&
CoTaskMemFree pidl
UpdateShellFolder = True
End If
End Function
Бии, за да те уважават!
Declare Sub SHChangeNotify Lib "shell32" (ByVal wEventId As Long, _
ByVal uFlags As Long, ByVal dwItem1 As Any, ByVal dwItem2 As Any)
Public Const SHCNE_UPDATEDIR = &H1000
Public Const SHCNF_IDLIST = &H0
Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, _
pidl As Long) As Long
Public Const NOERROR = 0
Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Public Function UpdateShellFolder(nFolder As Long) As Boolean
Dim pidl As Long
UpdateShellFolder = False
If (SHGetSpecialFolderLocation(0, nFolder, pidl) = NOERROR) Then
SHChangeNotify SHCNE_UPDATEDIR, SHCNF_IDLIST, pidl, 0&
CoTaskMemFree pidl
UpdateShellFolder = True
End If
End Function
Бии, за да те уважават!