• 实现双击IE9的Tab键关闭当前页面的功能


    今天研究了一下如何实现双击IE9的Tab键关闭当前页面的功能,实现这个功能的基本原理如下:

    1. 建立全局鼠标钩子,获取双击Tab时候的消息,触发Tab被双击的事件。
    2. 发送Ctrl+W键盘消息,触发快捷键功能关闭当前Tab页。

    这里有几个问题需要解决:

    1. 如何获取鼠标双击事件:
      通过spy++检测后发现,发现Tab栏是一个类型为DirectUIHWND的类,它是一个TabControl,本身并不支持鼠标双击消息,因此,需要自己根据MouseUP消息判断是否为双击消息(通过两次MouseUp的时间间隔来判断)。
    2. 如何判断是否双击的Tab栏:
      由于创建的是全局钩子,所有的鼠标消息都会被截取到,因此这里要进行过滤。具体的条件为:鼠标触发点的控件类为DirectUIHWND,并且其进程为IE。
    3. 如何关闭当前Tab页:
      这个比较简单,直接调用keybd_event发送Ctrl+W即可。

    实现这个功能并不困难,但我想把它集成到BHO中时,却遇到了一个问题——当IE开启了保护模式时,是无法收到全局鼠标钩子的消息的。

    解决这个问题的方法有两种:

    1. 关闭保护模式
    2. 新写一个Hook程序实现鼠标消息的截取,然后在BHO中启动该进程。

    方法1的方法降低了浏览器的安全性,自然不可取。方法2虽然可以解决这个问题,但是却多了一个附加进程,虽然可以把它隐藏起来,用户感知不到,但始终不大爽。权衡再三,最终还是选择了方法2。(我对windows编程不熟,如果有更好的方法请告知)

    这里是我的一个实现,感兴趣的朋友可以自己下载试一下: 点击下载   使用环境是win7+ie9+.net4.0,其它环境无法执行。

    由于没有和BHO集成,需要手动启动,启动后它自动隐藏在后台(通过进程管理器可以看,就不要不停的点了),然后就有了双击IE9的Tab键关闭当前页面的功能了。当IE9关闭后,改程序自动关闭。该程序没有混淆,需要代码就自己反编译好了,就不要留言了。


     

  • 相关阅读:
    关于clipboard插件的使用问题
    js复制内容到剪切板,兼容pc和手机端,支持Safari浏览器
    CSS选择器复习
    关于ajaxFileUpload图片上传,success和error都触发的情况
    百度地图API,定位您的当前位置
    开发移动端web页面click事件失效问题
    开发移动端web应用, 使用手机自带键盘的搜索按钮
    原生JS实现一个简单的前端路由(原理)
    计算机网络 —— 网络层
    计算机网络 —— 数据链路层
  • 原文地址:https://www.cnblogs.com/TianFang/p/2005927.html
Copyright © 2020-2023  润新知