我之所以强调模拟右键刷新,是因为我发现,只有右键刷新是最全的刷新功能,我之前试了一个代码,对于扩展名的显示或隐藏,刷新不出来。
从注册表更改扩展名的显示或隐藏,位置是
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
HideFileExt的值,改为0是显示扩展名,改为1是隐藏扩展名。
但是从注册表里更改的话,桌面上图标名称不会立即生效,必须右键刷新一下(按F5都不行),我所找到的刷新代码也不行,谁可以解决此问题??我会追加分,谢谢。
从注册表更改扩展名的显示或隐藏,位置是
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
HideFileExt的值,改为0是显示扩展名,改为1是隐藏扩展名。
但是从注册表里更改的话,桌面上图标名称不会立即生效,必须右键刷新一下(按F5都不行),我所找到的刷新代码也不行,谁可以解决此问题??我会追加分,谢谢。
解决方案 »
- 急急急急急急急急急。。。。两个edit值的问题 答案适合马上散分
- 谁知道6中的indy组件功能如何〉与7中的indy差别是不是很大?
- ClientDataSet从XML加载数据后在没有改动的情况全部写入数据库
- 简单的类型转换问题
- IconData.Wnd:=Handle;安装托盘图标时老出错?请大峡指点!
- 怎样将以下SQL语句的结果标题显示为 班别 总人数 男生人数 女生人数
- 小问题,关于文件夹复制
- 我的可用分一个星期没涨了,请问斑竹什么原因!,再不涨我就只好换ID了!~
- Dsgnintf.dcu是一个什么文件啊,我的程序中用了一个控件它说缺少这个文件!
- 我的odbc 坏了,如何重新安装
- 自定义消息
- MMX 怎么一次性去除全部黑色。
USES_CONVERSION;
IActiveDesktop *pActiveDesktop;
hr = CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,(void**)&pActiveDesktop);
if(hr==S_OK){
COMPONENTSOPT opt;
opt.dwSize = sizeof(opt);
opt.fActiveDesktop = opt.fEnableComponents = 0;
HRESULT hr = pActiveDesktop-> SetDesktopItemOptions(&opt,0); pActiveDesktop-> ApplyChanges(AD_APPLY_REFRESH);
opt.fActiveDesktop = opt.fEnableComponents = TRUE;
hr = pActiveDesktop-> SetDesktopItemOptions(&opt,0);
WCHAR wszPath[MAX_PATH];
CString strPath="c:\\a.html";
LPTSTR lpStr = strPath.GetBuffer(strPath.GetLength());
MultiByteToWideChar(CP_ACP, 0, lpStr, -1, wszPath, MAX_PATH);
strPath.ReleaseBuffer();
hr = pActiveDesktop-> SetWallpaper(wszPath, 0);
pActiveDesktop-> ApplyChanges(AD_APPLY_ALL);
pActiveDesktop-> ApplyChanges(AD_APPLY_REFRESH); }
pActiveDesktop-> Release();
SHChangeNotify(SHCNE_ASSOCCHANGED , SHCNF_FLUSH or SHCNF_FLUSHNOWAIT or SHCNF_DWORD , PChar('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'), NiL);