我正在尝试清空回收站,作为释放硬盘空间的过程的一部分。他是我到目前为止的代码。在我班上最顶层:
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中。
答案 0 :(得分:1)
您可以查看sample。
基本SHEmptyRecycleBin 0, vbNullString, 0
或Call SHEmptyRecycleBin(0, vbNullString, 0)
应该没问题,但是他们正在传递一个实际的hwnd
for function UI以用作所有者窗口。