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. Flink DataStream API 中的多面手——Process Function详解

    之前熟悉的流处理API中的转换算子是无法访问事件的时间戳信息和水位线信息的.例如:MapFunction 这样的map转换算子就无法访问时间戳或者当前事件的时间. 然而,在一些场景下,又需要访问这些信 ...

  2. ASP截取字符 截取字符之间的字符

    ASP截取字符:MID函数Mid(变量或字串符,开始字节, 结尾字节(可不填)) InStrRev(变量, "字串符")  最后出现位置InStr(变量, "字串符&qu ...

  3. 理解ASP.NET Core - [03] Dependency Injection

    注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 依赖注入 什么是依赖注入 简单说,就是将对象的创建和销毁工作交给DI容器来进行,调用方只需要接 ...

  4. thinkphp5.x在函数禁用的情况下绕过

    描述 测试的时候发现一个thinkphp的网站,有tp5的漏洞但无法执行命令,但没机会进行后续测试,所有在这里自己搭建环境进行复现一下. 使用的是tp5.0.16 一开始使用网上的payload打一直 ...

  5. 初识Ansible 01

    自动化运维工具有很多,从实现的功能.维护的成本.使用的系统来选择,几种常用运维工具比较: Puppet基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltS ...

  6. Django项目中的模板继承

    1. 定义一个基础的页面HTML文件base.html <!DOCTYPE html> <html lang="en"> <head> < ...

  7. container of()函数简介

    在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义 ...

  8. Abp Vnext3 vue-admin-template(一用户登录)

    Git地址https://github.com/PanJiaChen/vue-admin-template/blob/master/README-zh.md 官方文档https://panjiache ...

  9. Windows安装Docker & Docker-Compose & 配置docker私有仓库

    一定要给windows先创建软连接,不然系统盘会爆表的: mklink /j .docker D:\Administrator\.docker Win7安装Docker Dockerfile # FR ...

  10. 安装docker遇到:package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed

    执行 yum install docker-ce docker-ce-cli containerd.io 提示: 错误: 问题: package docker-ce-3:19.03.8-3.el7.x ...