Windows下的程序及热键监视神器——Spy++

背景

在使用Windows的时候,偶尔会发现某些应用程序的热键不生效了;又或是桌面弹出了弹框却并不知道这个弹框来自何处。例如,本人最近使用Vim的时候,发现创建分屏后,无法使用ctrl+w快捷键完成切屏操作,一开始以为是Vim配置出现了问题,后来发现就连Edge浏览器的ctrl+w关闭页面都无法完成,仔细一想才觉得是热键被占用了,这时候就要祭出Windows下一款简单的神器Spy++。

如何获取Spy++

Visual Studio

如果你下载过VS2019(其他版本应该同理),那么你可以在VS的安装目录/Common7/Tools/中找到一个名叫spyxx.exe以及spyxx_amd64.exe,如果你的机器是64位版本最好使用后者(PS:spyxx中的xx即为倒着的加号++)。

Spy++ 帮助 - Visual Studio | Microsoft Docs

GitHub

当然,如果你没有安装VS或是其他版本的VS没有spy++,已经有热心开发者把不同版本的spy++上传到了仓库。

GitHub - westoncampbell/SpyPlusPlus: Microsoft Spy++

你只需要clone仓库下载即可。

本人提供度盘

如果你是一位普通的Windows使用者,对上面的方式都不怎么会,本人已经将VS2019中的spy++传到了度盘,下载即可使用。

链接:https://pan.baidu.com/s/1CwLPltBelCJVtbyFQObA0w

提取码:cdn7

如何使用Spy++

热键占用检测

Spy++能够对当前的热键占用进行检测并给出占用该热键的应用程序。具体做法如下:

1、打开Spy++,选择日志消息(log message)

2、选择All Windows in System

这一步的目的是保证拦截到当前Windows系统中的所有窗体的有关消息

3、进入message页签,筛选热键消息

4、保存配置后,会看到界面有一个空白窗口,然后按下快捷键,会发现窗口中会出现对应的热键消息

本例中,本人使用了alt+space快捷键呼出了uTools(另一款本人特别喜欢的工具)。通过Spy++监听到了快捷键的按下。我们可以右键该条消息,查看Properties检查该热键是由哪个程序捕获的:

窗体所属程序检测

除了上述Spy++能够监听Windows下的事件消息外,它还能获取Windows下任意窗口的句柄信息,进而获取到该窗口所属的应用程序。

1、Spy菜单中选择Find Window

2、拖动FinderTool到你想要识别的窗口上,松开它。剩下的请看下面的gif。

Windows下的程序及热键监视神器——Spy++的更多相关文章

  1. windows下控制台程序实现窗口显示

    windows下实现窗口显示,如果限定是C/C++语言,并且是原生Windows支持,需要使用GDI或GDI+.一般是在Visual Studio里新建Win32应用程序,而不是Win32 conso ...

  2. Windows下MFC程序利用LockCop解决死锁

    死锁现象:在训练的时候,点击“终止”按钮时不时会发生死锁. 检测工具:LockCop.TRACE宏.::GetCurrentThreadID函数. 检测手段: 总结起来就是—— 第一步:用LockCo ...

  3. linux 和 windows下的程序计时

    Windows 使用<windows.h>中的GetTickCount(),该函数获得从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD. 转自:http://w ...

  4. 【Qt5】Windows下配置程序的产品、公司、版权、版本号等详细信息

    在工程的pro文件中加入下面的配置 # 配置图标(仅Windows有效)# 本程序使用两个图标,这样其快捷方式可以有更多选择,也可以给关联文件提供图标选择RC_ICONS += icon1.ico \ ...

  5. windows下rabbitmq(架构师必备神器)集群搭建

    准备2台机器,例如:computera: 10.0.0.151   computerb:10.0.0.234  都安装erlang环境和rabbitmq服务,注意otp环境和rabbitmq服务必须版 ...

  6. Windows 下QT程序发布

    方法1:利用QT自带打包工具 1.新建文件夹,把编译好的exe文件放入该文件夹 2.使用QT下的命令行 3.进入该exe所在文件,执行windeployqt xxx.exe,若出现找不到命令的情况 4 ...

  7. Windows下安装程序时提示未安装Microsoft Net FrameWork 2.0

    问题描述 安装程序时碰到如下: 现在基本都是用win7.win10系统,缺少环境大多数都是因为系统没有启用. 解决方法 控制面板 - 程序 - 启用或关闭Windows功能 - 把第一项'NET Fr ...

  8. Windows下将程序打包为安装包(最为简易的方式)

    一.准备工作:先下载一个Inno Setup编译器,这里我用到的是5.3.3中文版的. 软件介绍: Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本, ...

  9. Windows下禁用锁屏热键WinKey+L

    在注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]中创建名字为DisableLockWo ...

随机推荐

  1. Git脑图

    ps:有时我们想一台有不同的git账号对应不同的git仓库时(gitLab/gitHub)时,除了全局的用户配置定义,我们可以为不同仓库自定义不同用户名和邮件 1.查询全局的配置:git config ...

  2. Map 综述(二):彻头彻尾理解 LinkedHashMap

    摘要: HashMap和双向链表合二为一即是LinkedHashMap.所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的Hash ...

  3. docker安装与配置nginx详细过程

    注:大鸟飞过,此方式只用于快速搭建使用 第一步 pull nginx 命令:docker pull nginx 第二步 启动nginx 命令:docker run --name nginx -p 80 ...

  4. 4种Golang并发操作中常见的死锁情形

    摘要:什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你.我俩都这么想,这事就解决不了了. 本文分享自华为云社区< ...

  5. .Net Core 中的选项Options

    .NetCore的配置选项建议结合在一起学习,不了解.NetCore 配置Configuration的同学可以看下我的上一篇文章 [.Net Core配置Configuration源码研究] 由代码开 ...

  6. Spring Cloud Eureka 实践(一)

    Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,主要在Spring Cloud架构中提供服务注册发现的功能.那么是不是可以尝试在本地搭一个单例Eu ...

  7. MongoDB(2)- 安装 MongoDB

    MacOS 安装 MongoDB 博主目前都用 mac 电脑练习,所以这里重点讲 MacOS 安装方式 系统要求 MongoDB 4.4 社区版支持 macOS 10.13 或更高版本 安装 Home ...

  8. ysoserial exploit/JRMPClient

    ysoserial exploit/JRMPClient 上一篇文章讲到,当服务器反序列化payloads/JRMPListener,即会开启端口监听.再使用exploit/JRMPClient模块发 ...

  9. Expression 表达式动态生成

    http://blog.csdn.net/duan1311/article/details/51769119 以上是拼装和调用GroupBy的方法,是不是很简单,只要传入分组列与合计列就OK了! 下面 ...

  10. Git报错-refusing to merge unrelated histories

    执行git pull 时报错: 出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库.假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了 ...