思路小记 - 彻底干掉惠普笔记本的大小写切换提示框

现象

最近才开始用HP的笔记本(EliteBook),发现有个恼人的现象:

在输入文字的时候,有时需要按下CAPS Lock键,锁定大小写,按下CAPS键后,你会发现你的输入会暂时输入不进去,它会在右下角弹一个提示,说CAPS ON / OFF,提示消失后,你可以继续输入了,但是中断让人十分不爽。

尝试

1、寻找程序设置,期待有设置可以开启或者关闭这个提示,未果。

2、网上搜索,按照帖子里面说的在控制面板里设置系统自带的设置,未果。

3、发现有Remap keycode的方案,把Caps Lock按钮的keycode改掉,但怀疑会导致大小写切换失效,没有进一步尝试。

4、意外发现,这个提示框出现时,会有一个进程出现,HpCaslNotification.exe,改名后,任何提示都没有了,包含屏幕亮度调节提示框、音量调节提示框等。也不太爽,不完美,只想去掉大小写切换时的提示框。

5、尝试分析这个HpCaslNotification.exe程序,看看是不是读取了什么地方设置,再去弹这个提示框,思路还是在停留在设置上面,后来发现这个程序是.NET写的,用上ILSpy,却发现的确是被混淆了,读起代码来比较吃力,也没有找到关键点。

6、偶然来了灵感,去追踪谁打开了HpCaslNotification.exe,发现它的父进程是QLBController.exe,发现也是.NET编写的,并且没有被混淆,大爽。

7、发现了关键代码,对键盘有监听,判断按下的是否是CAPS Lock键,如果是就会弹相应的提示框。

结论

使用Reflector加上Reflexil,在IL里,把QLBController.exe中关键判断Caps Lock的KeyCode 20改成其他的KeyCode(不存在于键盘上的KeyCode),再保存(此程序有签名,我是选择的保持延迟签名状态),把原始程序替换掉。尝试切换大小写,整个世界都安静了,再没有恼人提示中断了。而且其他的提示框也保留下来了。

没有尝试,在保存程序时,对签名的不同处理,会不会对运行程序有所影响。

你可能感兴趣的:(.net,reflector,惠普笔记本,Reflexil,大小写切换提示)