SHEmptyRecycleBin в VB6 ничего не делает
Я пытаюсь очистить корзину как часть процесса, который освобождает место на жестком диске. Он код, который я получил до сих пор. На вершине моего класса:
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, который вызывает ActiveX DLL:
Const SHERB_NOCONFIRMATION = &H1
lRetVal = SHEmptyRecycleBin(Empty, vbNullString, SHERB_NOCONFIRMATION)
...оно работает. Я не могу понять, почему он работает в.exe, а не в.dll, и я предпочел бы сохранить весь код в.dll, если это возможно.
1 ответ
Вы можете проверить этот образец.
Основном SHEmptyRecycleBin 0, vbNullString, 0
или же Call SHEmptyRecycleBin(0, vbNullString, 0)
должно быть в порядке, но они проходят фактический hwnd
для пользовательского интерфейса функции для использования в качестве окна владельца.