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. linux centos7安装部署gitlab服务器

    refer:https://www.globo.tech/learning-center/install-gitlab-centos-7/#:~:text=How%20to%20Install%20G ...

  2. 跟着华为,学数字化转型(8):组织转型之业务IT一体化

    数字化时代,技术已经成了企业发展的重要驱动力,是转型中的企业不可或缺的力量.那采用什么样的组织结构,才能发挥出技术能力的最大价值呢?华为经历了多种组织形式,最终得出的结论是业务IT一体化组织是最合适的 ...

  3. freeswitch新增模块API

    概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块. freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块 ...

  4. Java全栈方向学习路线

    前端方向 前端基础 HTML --> https://www.w3school.com.cn/html/index.asp CSS --> https://www.w3school.com ...

  5. Learning ROS: Recording and playing back data

    本文主要部分来源于ROS官网的Tutorials. Description: This tutorial will teach you how to record data from a runnin ...

  6. Heartbeat MySQL双主复制

    目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2.3 master01 my.cf配置 2.4 创建账号 2.5 master02 my.cf配置配置 2.6 创 ...

  7. Python之sqlite3模块

    python自带有sqlite3模块,该模块可以方便我们操作sqlite数据库,下面一起跟随示例了解sqlite3模块的具体用法. import sqlite3 # 连接数据库 connection ...

  8. epoll代码框架

    epoll代码实现框架: #define MAX_EVENTS 10 struct epoll_event ev, events[MAX_EVENTS]; int listen_sock, conn_ ...

  9. Dockerfile 自动制作 Docker 镜像(一)—— 基本命令

    Dockerfile 自动制作 Docker 镜像(一)-- 基本命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:手动制作Do ...

  10. java.net.NoRouteToHostException: Cannot assign requested address

    今天压力测试时, 刚开始出现了很多异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address.  经网上查资料, 是 ...