Тема: VBS: Очистка корзины
\
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
\
А так:
CreateObject("Shell.Application").NameSpace("shell:RecycleBinFolder").Self.InvokeVerb("Empty")
?
RecycleNOW
Recycle Bin Cleaner /h /c /p /a
EmptyRecycleBin /Q
nircmd emptybin
OFF:
А так:
Запрос на подтверждение, наверное, не нравится .
Кстати, как можно узнать такого рода канонические глаголы (я не про «for each … in .verbs» — там локализованные имена)?
Запрос на подтверждение, наверное, не нравится .
В данном случае должен бы понравиться:
q=MsgBox(chr(13)+"Очистить корзину?",36," КОРЗИНА") If q=6 Then
Кстати, как можно узнать такого рода канонические глаголы (я не про «for each … in .verbs» — там локализованные имена)?
Меня этот вопрос тоже весьма занимает, помнится, я даже его хотел как нибудь задать. В данном случае я просто угадал.
В данном случае должен бы понравиться:
Я не про то. Про это:
Меня этот вопрос тоже весьма занимает, помнится, я даже его хотел как нибудь задать. В данном случае я просто угадал.
Спасибо, ясно. Жаль.
P.S. Если что ещё интересное угадаете — пишите.
Вопрос, думаю, многих интересует. Я в своё время плюнул на поиски и остановился на Doit:
CreateObject("Shell.Application").NameSpace(&Ha&).Items.Verbs.Item(2).DoIt
Flasher, номер может меняться. Можно тупо перебирать, пока не найдётся вариант «О&чистить корзину», затем выполнить его (в данном случае, разумеется, можно прямо использовать найденный коллегой wisgest глагол «"Empty"»).
У меня он не срабатывает (в отличии от моего примера).
Да, вероятно, в некоторых случаях номер может меняться, если править расширения оболочки через реестр: HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\shell\.
Но это крайние случаи. А вот shell:RecycleBinFolder в XP по всей логике не заработает.
У меня он не срабатывает
У Вас какая ОС? У меня пример коллеги wisgest работает.
А вот shell:RecycleBinFolder в XP по всей логике не заработает.
У меня работает. Как раз Windows XP SP3: WSH: перечень предопределённых символьных имён Shell.Application — Серый форум.
У Вас какая ОС?
Win 7 x32 в текущий момент.
Команды shell:, НСЯП, работать начали с Висты, отсюда такая мысль..
А, вообще понятно почему не работает. Нужно так:
With GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
.document.Application.NameSpace("shell:RecycleBinFolder").Self.InvokeVerb("Empty")
.Quit
End With
Команды shell:, НСЯП, работать начали с Висты, отсюда такая мысль..
Гораздо раньше .
Нужно так:
У меня, на Windows XP, порождает ошибку при попытке обращения к «.document».
Странно. Тут на XP проверяли.
Сам объект создаётся:
Option Explicit
Dim objWebBrowser
Dim objDocument
Set objWebBrowser = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
WScript.Echo TypeName(objWebBrowser)
Set objDocument = objWebBrowser.document
WScript.Echo TypeName(objDocument)
WScript.Quit 0
Ошибка при попытке обращения к «.document».
А вот shell:RecycleBinFolder в XP по всей логике не заработает.
Проверял на XP SP3. Насколько помню " shell:RecycleBinFolder" работало в SP1, "Empty" в XP SP1 пока проверить не могу, т.к. нахожусь вне дома, смогу проверить через пару недель.
А, вообще понятно почему не работает. Нужно так
В таком случае совсем не так - WebBrowser здесь не причём:
CreateObject("Shell.Application").NameSpace("::{645FF040-5081-101B-9F08-00AA002F954E}").Self.InvokeVerb "Empty"
(
У меня, на Windows XP, порождает ошибку при попытке обращения к «.document».
Естественно, чтобы был .Document нужен Navigate().)
В таком случае совсем не так - WebBrowser здесь не причём:
Да вот нет. Та же песня. Работает только через GetObject("new:, иначе по закрытию скрипта схлопывается.
Естественно, чтобы был .Document нужен Navigate().
У меня работает без него.
Вариант без окна запроса:
With CreateObject("Scripting.FileSystemObject")
For Each i in CreateObject("Shell.Application").NameSpace(&Ha&).Items
If i.Type = "File folder" Then .DeleteFolder(i.Path) Else .DeleteFile(i.Path)
Next : End With
А ещё лучше так:
Set Items = CreateObject("Shell.Application").Namespace(&Ha&).Items
If Items.Count > 0 Then
With CreateObject("Scripting.FileSystemObject")
Path = .GetParentFolderName(Items.Item(0).Path)
.DeleteFolder Path & "\*", 1 : .DeleteFile Path & "\*", 1
End With
End If
\
Flasher, номер может меняться. Можно тупо перебирать, пока не найдётся вариант «О&чистить корзину», затем выполнить его…
Номер, однозначно, может меняться (у меня, как ни странно, по действию #2 для Корзины будет запущен Far Manager), но ничего перебирать не надо — оказывается, ShellFolderItem.InvokeVerb() принимает и локализованные названия действий (надо только не забывать, что они могут содержать амперсанд).
Локализованое название лишь немного универсальнее номера действия: привязка не к расширениям оболочки, а к языку интерфейса. В отличие от Empty.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться