如何更新Windows资源管理器中为驱动器显示的可用空间量?
假设已打开Windows资源管理器并以编程方式删除某些文件。 不会刷新Windows资源管理器以显示可用的新可用空间。
所以,我尝试使用SHChangeNotify
这样的(Delphi代码):
ws := 'C:\';
SHChangeNotify (SHCNE_FREESPACE, SHCNF_PATH, PWideChar(ws), nil);
但它不会更新“Windows资源管理器”中报告的值。
请帮忙。
答案 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);