作为释放硬盘空间的过程的一部分,我正在尝试清空回收站。他是我到目前为止的代码。在我班上名列前茅:
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)
但它返回一个零,表示成功。有没有人曾经使用过这个功能,或者知道为什么它不起作用?这段代码是从 ActiveX dll 中运行的,如果这很重要的话。
**编辑**
好吧,我想我以前一定是误读或误解了某些东西,因为我认为无论我看到什么例子,都给我的印象是,如果最后一个变量使用 0,就不会调用确认窗口。我试过这段代码:
Const SHERB_NOCONFIRMATION = &H1
Call SHEmptyRecycleBin(0, vbNullString, SHERB_NOCONFIRMATION)
......它仍然不起作用。但是,如果我在调用 ActiveX dll 的 .exe 中使用此代码:
Const SHERB_NOCONFIRMATION = &H1
lRetVal = SHEmptyRecycleBin(Empty, vbNullString, SHERB_NOCONFIRMATION)
...有用。我不知道为什么它在 .exe 而不是 .dll 中工作,但如果可能的话,我宁愿将所有代码保留在 .dll 中。