替换 Win + E 热键的默认处理

本文介绍了一种方法来替换Windows默认的Win + E热键行为,使其打开自定义的资源管理器,而非系统自带的。通过内联挂钩(inline hook)技术,作者在DLL中实现了对Shell_TrayWnd窗口的WM_HOTKEY消息处理,从而在按下Win + E时弹出自定义程序。
摘要由CSDN通过智能技术生成

现在有很多比 Windows 资源管理器功能强大的资源管理程序,如 Total Commander、xplorer2 和 Ultra Explorer 等等。于是乎,我们就会有了一个新的需求——在使用系统热键 Win + E 的时候能呼出我们自定义的资源管理程序,而不是默认的 Windows 资源管理器。但是,我一直没有找到一个合适的辅助工具来实现这个功能,网上大多的热键工具不是无法替换默认的 Win + E,就是不够完美——例如键入后仍会弹出资源管理器,或弹出开始菜单,甚至有时候会导致 explorer.exe 崩溃退出。

于是我决定自己实现这一功能,最初我选择了键盘钩子,但我发现钩子虽然能捕获到这个热键,但是并不能对这个热键的处理进行重新定向,除我的程序之外,系统仍然会收到这个消息。当然,这样就可以解释为什么大多能够拦截 Win + E 的热键工具不够完美的原因了。

于是我决定使用更猥琐的方法,从 explorer.exe 的内部开始探究。

我的切入点是弹出的资源管理器窗口,既然这个窗口是新建的,那么必然会经过 CreateWindow,于是我选择了 NtUserCreateWindowEx 作为我的断点:

bp USER32!NtUserCreateWindowEx

接下来按下 Win + E,断点如约命中。检查其堆栈,发现:

ChildEBP RetAddr 
01c1f3cc 77d2e442 USER32!NtUserCreateWindowEx
01c1f478 77d2d0d6 USER32!_CreateWindowEx+0x1ed
01c1f4b4 77f596af USER32!CreateWin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值