如何向所有的资源管理器窗口发送刷新消息

本文探讨了通过编程修改注册表以实现文件扩展名显示与隐藏的功能,并讨论了相关技术难点,如如何通知系统更新及如何正确刷新资源管理器等问题。

     原始问题是这样的:我想编程实现文件扩展名的显示与隐藏,实际上就是修改HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 的HideFileExt的值,但问题是将此键值修改后,系统并不知道这个更新,我想应该是向系统广播某个消息(或者是某些消息)。我试着向windows发送各种各样的消息,包括试了BroadcastSystemMessage、SHChangeNotify、SystemParametersInfo等函数,但是都没有成功。

进一步一个折衷的问题是:我发现,在更改上面的注册表键值以后,在资源管理器窗口中按F5键刷新并起不到作用,只有点右键刷新才能使扩展名隐藏或显示。但是,如果已经在某个资源管理器窗口中点右键刷新了,则其它的资源管理器窗口可以通过F5键来得到隐藏或显示扩展名的目的。
     退一步,我应该如何向所有打开的资源管理器窗口都发送F5按键消息呢?我的思路是通过PostMessage(handle,WM_KEYDOWN,VK_F5,0);PostMessage(handle,WM_KEYUP,VK_F5,0);但是handle的确定相当困难,我试过用窗口的顶级handle及里面的FolderView的句柄,都不起作用。而且,我想,即使是找到用VK_F5遍历发送消息的方法,也会引起巨大的系统开销。而且,由于所有的资源管理器窗口都被遍历一遍(这是不是意味着所有的资源管理器窗口都会获得一次焦点?),如果遍历顺序控制不好的话会引起各窗口覆盖顺序的变化,肯定会让使用者感到不爽。
    问题大概就这么多,诸位有没有什么好的办法啊?请各路高手不吝赐教,多谢了先。

转载于:https://www.cnblogs.com/flappy/archive/2006/06/22/432329.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值