use*_*591 1 windows delphi windows-shell delphi-7
如何更新Windows资源管理器中显示的可用空间量?
假设打开Windows资源管理器并以编程方式删除某些文件.Windows资源管理器不会刷新以显示可用的新可用空间.
所以,我尝试使用SHChangeNotify这样的(Delphi代码):
ws := 'C:\';
SHChangeNotify (SHCNE_FREESPACE, SHCNF_PATH, PWideChar(ws), nil);
Run Code Online (Sandbox Code Playgroud)
但它不会更新"Windows资源管理器"中报告的值.
请帮忙.
如果您使用的是Delphi 7,那么SHCNF_PATH将映射到ANSI版本,SHCNF_PATHA.在这种情况下传球PWideChar是错误的.写这样:
var
Drive: string;
....
Drive := 'C:\';
SHChangeNotify(SHCNE_FREESPACE, SHCNF_PATH, PChar(Drive), nil);
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢使用Unicode版本,则需要使用SHCNF_PATHW.
var
Drive: WideString;
....
Drive := 'C:\';
SHChangeNotify(SHCNE_FREESPACE, SHCNF_PATHW, PWideChar(Drive), nil);
Run Code Online (Sandbox Code Playgroud)