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

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资源管理器"中报告的值.

请帮忙.

Dav*_*nan 5

如果您使用的是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)