博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
阅读量:7050 次
发布时间:2019-06-28

本文共 1935 字,大约阅读时间需要 6 分钟。

清除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;

 

转载地址:http://ljpol.baihongyu.com/

你可能感兴趣的文章
一分钟了解数据库扩展
查看>>
MyBatis在Spring中的事务管理
查看>>
springboot2.0下为JPA定义多个默认数据源
查看>>
谁来为程序猿的996买单?
查看>>
面试题(6)
查看>>
2017-07-07
查看>>
EasyUI介绍
查看>>
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
查看>>
微信相册
查看>>
java验证码/servlet
查看>>
1:spring mvc 概述
查看>>
Java 打包成 exe 文件
查看>>
go开发环境goclipse的安装
查看>>
Android NDK学习(2)使用cygwin生成.so库文件
查看>>
android使用notifyDataSetChanged()方法,listview数据没有更新
查看>>
MySQL中group_concat函数
查看>>
linux 学习笔记--磁盘管理
查看>>
SmartAuditor播放器不能搜索
查看>>
Weblogic10.3.6 for solaris10 x64安装
查看>>
eval解析JSON对象中的注意点
查看>>