BOBAT
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Вспомнил, тут давеча на русском форуме ТС упоминалась интересная консольная утилита winapiexec, позволяющая вызывать функции из библиотек: можно ограничиться минимальными изменениями вашего VBS-скрипта, всего пару строк в конце основной работы (winapiexec.exe рядом со скриптом) Код: Set WshShell = CreateObject("WScript.Shell") WshShell.Run """" & objFSO.GetParentFolderName(Wscript.ScriptFullName) & "\winapiexec.exe"" shell32.dll@SHChangeNotify 0x00001000 0x00000001 """ & WScript.Arguments.Item(0) & """ 0", 0, True Если я не ошибся с параметрами вызова SHChangeNotify. | Попробовал с winapiexec у меня 64-bit может в коде прописать "winapiexec64.exe"? Поменял, ошибка та же... Добавлено: Цитата: Код: #NoTrayIcon #Include <WinAPIEx.au3> #Include <APIConstants.au3> ;Проверяем, что скрипт запущен с одним параметром и что этот параметр - каталог, ; потом сообщаем системе, что этот каталог был изменён If $CmdLine[0] = 1 Then If StringInStr(FileGetAttrib($CmdLine[1]), 'D') Then _WinAPI_ShellChangeNotify($SHCNE_UPDATEDIR, $SHCNF_PATH, $CmdLine[1]) EndIf | после компиляции просто запускаю из папки- ничего не происходит, скомпилировал в x64 - запустил от администратора - значок сменился моментально, прописал в скрипт запуск с правами, скомпилировал - запускаю в изменённой папке - ничего не происходит, но через какое-то время иконка меняется (у меня и раньше так было, и без запуска WinAPI_ShellChangeNotify, иногда иконка меняется, иногда через время, иногда не меняется никогда), как сделать, чтобы была какая-то стабильность при запуске - либо меняется всегда!! - другого варианта нет Причём в свойствах папки видно, что значок изменился, иногда при удалении файла из папки значок меняется сразу, иногда нет, закономерности в применении значка к папке в Windows я никак не могу определить Закономерность в изменении значка есть только одна - если вручную переименовать desktop.ini а потом отменить переименование - то значок меняется моментально, при переименовании папки значок тоже может сменится моментально Добавлено: Может я просто неправильно добавляю код в vbs так, пожалуйста, подскажите, как правильно добавить код с winapiexec64.exe в vbs чтобы не было ошибок, и как правильно запустить из vbs скомпилированный скрипт au3 (у меня он называется ShellChangeNotify.exe) код vbs Цитата: Option Explicit Const ReadOnly = 1 Const Hidden = 2 Const System = 4 Dim strSourceFolder Dim objFSO Dim objFile Dim strDesktopIniFile If WScript.Arguments.Count = 1 Then strSourceFolder = WScript.Arguments.Item(0) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strSourceFolder) Then strDesktopIniFile = objFSO.BuildPath(strSourceFolder, "desktop.ini") For Each objFile In objFSO.GetFolder(strSourceFolder).Files If StrComp(objFSO.GetExtensionName(objFile.Name), "ico", vbTextCompare) = 0 Then If Not StrComp(objFile.Name, objFSO.GetBaseName(strSourceFolder) & ".ico", vbTextCompare) = 0 Then objFile.Name = objFSO.GetBaseName(strSourceFolder) & ".ico" End If objFile.Attributes = objFile.Attributes Or Hidden If objFSO.FileExists(strDesktopIniFile) Then With objFSO.GetFile(strDesktopIniFile) .Attributes = .Attributes And Not (System Or Hidden) End With End If With objFSO.CreateTextFile(strDesktopIniFile, True) .WriteLine "[.ShellClassInfo]" .WriteLine "IconResource=" & objFile.Name & ",0" If Left(objFSO.GetFileVersion("C:\Windows\System32\ntdll.dll"), 2) <> "6." Then .WriteLine "IconFile=" & objFile.Name .WriteLine "IconIndex=0" End If .Close End With With objFSO.GetFile(strDesktopIniFile) .Attributes = .Attributes Or (System Or Hidden) End With With objFSO.GetFolder(strSourceFolder) .Attributes = .Attributes Or ReadOnly End With Exit For End If Next Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If Set objFSO = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>" WScript.Quit 1 End If WScript.Quit 0 |
| Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 06:38 16-08-2018 | Исправлено: BOBAT, 07:14 16-08-2018 |
|