1

如何更新 Windows 资源管理器中显示的驱动器可用空间量?

假设打开了 Windows 资源管理器并以编程方式删除了一些文件。Windows 资源管理器将不会刷新以显示新的可用空间。

所以,我试着SHChangeNotify像这样使用(Delphi代码):

ws := 'C:\';
SHChangeNotify (SHCNE_FREESPACE, SHCNF_PATH, PWideChar(ws), nil); 

但它不会更新“Windows 资源管理器”中报告的值。

请帮忙。

4

1 回答 1

5

如果您使用的是 Delphi 7,SHCNF_PATH则将映射到 ANSI 版本,SHCNF_PATHA. 在这种情况下,传递PWideChar是错误的。像这样写:

var
  Drive: string;
....
Drive := 'C:\';
SHChangeNotify(SHCNE_FREESPACE, SHCNF_PATH, PChar(Drive), nil);

或者,如果您更喜欢使用 Unicode 版本,那么您需要使用SHCNF_PATHW.

var
  Drive: WideString;
....
Drive := 'C:\';
SHChangeNotify(SHCNE_FREESPACE, SHCNF_PATHW, PWideChar(Drive), nil);
于 2012-12-18T11:31:58.673 回答