• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

IconcacherebuildingwithDelphi(Delphi清除Windows图标缓存源代码)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

清除Windows图标缓存的代码:

procedure RebuildIconCache;

....
const
  sr_WindowMetrics='Control Panel\Desktop\WindowMetrics\';
  sr_ShellIconSize='Shell Icon Size';

function  WindowsDir:string;
var
 buffer: array [0..255] of char;
begin
 GetWindowsDirectory(@Buffer,SizeOf(buffer));
 Result:=Buffer;
end;

Function UpdateAllWindowsCallback(WHandle : HWnd;
  Var Parm : Pointer) :
  Boolean; stdcall;
begin
 SendMessage(WHandle,WM_SETTINGCHANGE,0,0);
 Result:=True;
end;

Procedure UpdateAllWindows;
Begin
  EnumWindows(@UpdateAllWindowsCallback,
  WM_SETTINGCHANGE);
End;


function GetIconCacheFile:string;
begin
 Result:=getwindowspath+'ShellIconCache';
end;

procedure DeleteIconCache;
var
 sfile:string;
begin
 sfile:=GetIconCacheFile;
 if fileexists(sfile) then begin
  if deletefile(sfile)=false 
  then showmessage('Can not erase file: '+sfile);
 end;
 QueryRestartWindows;
end;


function RefreshActiveDesktop:boolean;
const
  CLSID_ActiveDesktop: TGUID 
  = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
  ActiveDesktop: IActiveDesktop;
begin
 try
  ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
    as IActiveDesktop;
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
  Result:=true;
 except
  Result:=false;
 end;
end;

procedure RefreshDesktop;
var
 wnd:THandle;
 fl:boolean;
begin
 fl:=RefreshActiveDesktop;
 if fl=false then begin
  wnd:=FindWindow('Progman', 'Program Manager');
  if wnd<>0 then SendMessage(wnd,WM_COMMAND,$A065,0)
  else UpdateAllWindows;
 end;
end;

procedure RebuildIconCache;
var
 news,olds:string;
 sz:integer;
begin
 Startwait;
 try
  deletefile(GetIconCacheFile);
  olds:=regreadstring(HKEY_CURRENT_USER,
    sr_WindowMetrics+sr_ShellIconSize);
  sz:=strtointdef(olds,32);
  inc(sz);
  news:=inttostr(sz);
  regwritestring(HKEY_CURRENT_USER,
    sr_WindowMetrics+sr_ShellIconSize,news);
  UpdateAllWindows;
  if olds='' then olds:='32';
  regwritestring(HKEY_CURRENT_USER,
    sr_WindowMetrics+sr_ShellIconSize,olds);
  UpdateAllWindows;
  RefreshDeskTop;
 finally
  StopWait;
 end;
end;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab exist函数发布时间:2022-07-18
下一篇:
Delphi Project 之工程管理器(Project Manager)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap