如何编程实现扩展右键菜单之三:调试Shell扩展DLL

在前两篇教程中,我们已经学会了如何在资源管理器的右键菜单中增加自己的菜单项,及如何将菜单分组为子菜单。在学习过程中,读者可能注意到,在VC中编译成功后,此时我们的扩展DLL已自动注册到系统中,此时Windows资源管理器将自动加载此文件,之后重新编译时,会提示该DLL文件正在被使用,无法覆盖,导致编译失败。本文将介绍如何解决这一问题。

首先,需修改如下注册表项:

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Explorer/AlwaysUnloadDLL

将该项的默认值修改为"1",该值指示资源管理器更频繁的释放不再使用的扩展DLL。

此外,在NT版的Windows中,还需在

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer

下创建一个名为DesktopProcess、类型为DWORD、值为1的参数。这个参数将每一个新打开的资源管理器运行在独立的进程中,这样我们就可以在项目设置中将我们的扩增DLL的调试进程设为c:/windows/explorer.exe,运行调试器进行调试。

如此设置后,我们如果发现因 资源管理器载入了扩展DLL而导致无法编译,可以将此DLL反注册,然后关闭资源管理器窗口,过一会儿(最多2到3分钟)就可以编译覆盖了。如果这样还不行,则只能反注册扩展DLL后,注销当前用户,然后重新登录,保证资源管理器不载入我们的DLL。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值