Я пытаюсь очистить корзину как часть процесса освобождения места на жестком диске. Он код, который у меня есть до сих пор. В верхней части моего класса:
Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hwnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
Private Declare Function SHUpdateRecycleBinIcon Lib "shell32.dll" () As Long
Затем в функции очистки жесткого диска:
SHEmptyRecycleBin(Empty, vbNullString, 0)
SHUpdateRecycleBinIcon
Я также пробовал это:
Dim lRetVal As Long
lRetVal = 0
lRetVal = SHEmptyRecycleBin(Empty, vbNullString, 0)
Но он возвращает ноль, что указывает на успех. Кто-нибудь когда-нибудь использовал эту функцию раньше или есть идеи, почему она не работает? Этот код запускается из DLL ActiveX, если это имеет значение.
**ИЗМЕНИТЬ**
Ну, я думаю, что я, должно быть, неправильно прочитал или неправильно понял что-то раньше, потому что я думаю, что какие бы примеры я ни смотрел, у меня сложилось впечатление, что окно подтверждения не будет вызвано с использованием 0 для последней переменной. Я пробовал этот код:
Const SHERB_NOCONFIRMATION = &H1
Call SHEmptyRecycleBin(0, vbNullString, SHERB_NOCONFIRMATION)
... и это все еще не работает. Однако, если я использую этот код в .exe, который вызывает dll ActiveX:
Const SHERB_NOCONFIRMATION = &H1
lRetVal = SHEmptyRecycleBin(Empty, vbNullString, SHERB_NOCONFIRMATION)
...оно работает. Я не могу понять, почему это работает в .exe, а не в .dll, и я бы предпочел сохранить весь код в .dll, если это возможно.