如何实现WINDOWS 桌面、资源管理器的右键菜单的刷新功能?(200分)

J

jingzux

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现WINDOWS 桌面、资源管理器的右键菜单的刷新功能?
我用下面这些方法只是闪一下,并不能实现刷新功能。
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
SendMessage(HWND_BROADCAST,WM_UPDATEUISTATE,EN_UPDATE,0);
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST+SHCNF_FLUSH, nil, nil);
 
SendMessage(FindWindow('Progman','Program Manager'),WM_COMMAND,$A065,0);

or
call the Invalidate method for your form, the desktop will refresh.

self.Invalidate
 
bubble:你的方法和我说的方法一样,没有用。还是谢谢你。
 
InvalidateRect(0, nil, true)不行吗?
 
jbas:也不行,是只是闪一下而已,没有实现右键菜单的刷新功能。
 
PostMessage(handle, WM_KEYDOWN, VK_F5, 0);
PostMessage(handle, WM_KEYUP, VK_F5, 1 shl 31);
 
我修改一文件或文件夹为隐藏属性,可是改好后并不隐藏,要按右键菜单的刷新功能才隐藏,
我就想实现这种刷新功能,可是用上面的方法都不能实现,不知还有其它方法吗?
 
不知道你是用哪种方法隐藏文件的,
不过我用了两种方法,FileSetAttr('e:/study', faHidden);
和winexec('attrib e:/study +h',sw_hide);
都可以实现自动刷新,马上就隐藏了。

另外系统的刷新你可以试试看
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0)
 
bubble:SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0)系统刷新只是闪一下而已,无效的。

 
invalidate
invalidataRect
 
invalidate
invalidataRect
这两个方法也是一样,只是屏幕闪一下而已,并没有刷新。真的没有什么方法吗?
WINDOWS右键菜单的“刷新”功能每次操作都有效,不知这个菜单是怎么实现的。
 
这么久都没有人答?这个问题一定很难了。
 
我用SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST+SHCNF_FLUSH, nil, nil);编译不过去那
 
以上方法我都试过,都不能马上刷新,还有没有更好的方法?
 
多人接受答案了。
 
顶部