更新Windows资源管理器中显示的可用空间量

时间:2012-12-18 09:31:33

标签: windows delphi delphi-7 windows-shell

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

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

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

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

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

请帮忙。

1 个答案:

答案 0 :(得分: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);