当前位置: 首页 > news >正文

Python实现鼠标点击获取窗口进程信息

最近遇到挺无解的一个问题:电脑上莫名其妙出现一个白色小方块,点击没有反应,关也关不掉,想知道它和哪个软件有关还是显卡出了问题,也找不到思路,就想着要不获取一下它的进程号看看。

于是写了一个Python脚本,可以通过鼠标点击快速获取任意窗口的详细信息,包括窗口标题、进程PID和程序路径。特别适合需要快速定位窗口来源或排查异常进程的场景。 

使用方法

  1. 运行脚本后,屏幕会提示:点击任意窗口开始检测 (按Ctrl+C退出)...
  2. 将鼠标移动到目标窗口上方并点击
  3. 控制台立即显示类似以下信息:
窗口标题: 无标题 - 记事本
进程PID: 1234
程序路径: C:\Windows\System32\notepad.exe

实现原理

  1. 核心组件

    • pynput:监听全局鼠标点击事件
    • pywin32:获取窗口句柄和进程ID
    • psutil:查询进程详细信息
  2. 技术流程

    • 鼠标点击时捕获坐标位置
    • 通过WindowFromPoint获取对应窗口句柄
    • 使用GetWindowThreadProcessId提取进程ID
    • 通过psutil查询进程可执行文件路径
    • 最后输出窗口标题和进程信息

安装依赖

pip install pynput pywin32 psutil

注意事项

  1. 需要Windows系统运行
  2. 获取系统级窗口(如任务栏)可能显示路径为Unknown
  3. 某些受保护进程可能需要管理员权限运行脚本
  4. 点击速度过快可能导致坐标捕获偏差,建议点击后稍作停顿

完整代码

import win32gui
import win32process
import psutil
import signal
import sys
from pynput import mousedef signal_handler(sig, frame):print("\n程序已退出")sys.exit(0)def get_window_info(x, y):hwnd = win32gui.WindowFromPoint((x, y))_, pid = win32process.GetWindowThreadProcessId(hwnd)try:process = psutil.Process(pid)exe_path = process.exe()except psutil.NoSuchProcess:exe_path = "Unknown"title = win32gui.GetWindowText(hwnd)return pid, exe_path, titledef on_click(x, y, button, pressed):if pressed:pid, exe, title = get_window_info(x, y)print(f"窗口标题: {title}")print(f"进程PID: {pid}")print(f"程序路径: {exe}\n")# 注册信号处理
signal.signal(signal.SIGINT, signal_handler)with mouse.Listener(on_click=on_click) as listener:print("点击任意窗口开始检测 (按Ctrl+C退出)...")try:listener.join()except KeyboardInterrupt:pass

 于是破案:PowerToys!

相关文章:

Python实现鼠标点击获取窗口进程信息

最近遇到挺无解的一个问题:电脑上莫名其妙出现一个白色小方块,点击没有反应,关也关不掉,想知道它和哪个软件有关还是显卡出了问题,也找不到思路,就想着要不获取一下它的进程号看看。 于是写了一个Python脚本…...

Mac安装jdk教程

在Mac上安装JDK(Java Development Kit)的步骤如下: 一、下载JDK安装包 访问Oracle官网: 打开浏览器,访问Oracle JDK下载页面。 选择JDK版本: 根据你的开发需求选择合适的JDK版本。例如,JDK 11…...

【HeadFirst系列之HeadFirst设计模式】第14天之与设计模式相处:真实世界中的设计模式

与设计模式相处:真实世界中的设计模式 设计模式是软件开发中的经典解决方案,它们帮助我们解决常见的设计问题,并提高代码的可维护性和可扩展性。在《Head First设计模式》一书中,作者通过生动的案例和通俗的语言,深入…...

JDBC 完全指南:掌握 Java 数据库交互的核心技术

JDBC 完全指南:掌握 Java 数据库交互的核心技术 一、JDBC 是什么?为什么它如此重要? JDBC(Java Database Connectivity)是 Java 语言中用于连接和操作关系型数据库的标准 API。它允许开发者通过统一的接口访问不同的数…...

Vue父子组件传递笔记

Vue父子组件传递笔记 props 父组件向子组件进行传值 &#xff08;1&#xff09;在父组件APP.vue <template><div> <!-- 给子组件Child.vue传递以msg的信号&#xff0c;传递的信息内容为messages --><Child :msg"messages"></Child>…...

文件上传漏洞与phpcms漏洞安全分析

目录 1. 文件上传漏洞简介 2. 文件上传漏洞的危害 3. 文件上传漏洞的触发条件 1. 文件必须能被服务器解析执行 2. 上传目录必须支持代码执行 3. 需要能访问上传的文件 4. 例外情况&#xff1a;非脚本文件也可能被执行 4. 常见的攻击手法 4.1 直接上传恶意文件 4.2 文件…...

【deepseek】辅助思考生物学问题:ICImapping构建遗传图谱gap较大

基于ICImapping构建遗传图谱的常见问题与解答 问题一&#xff1a;染色体两端标记间遗传距离gap较大 答疑一 标记密度不足&#xff08;如芯片设计时分布不均&#xff09;重组概率低基因组结构变异软件算法限制 Deepseek的解释 #### 1. **染色体末端的重组率较低** - **现象*…...

linux磁盘非lvm分区

linux磁盘非lvm分区 类似于windows划分C盘、D盘&#xff0c;并且不需要多个磁盘空间合一 图形化直接分区 通过gparted 这个提供直观的图形化分区&#xff0c;类似windows的磁盘管理工具 下载方式&#xff1a; 乌班图/debian系列&#xff1a; sudo apt install gparted红帽…...

Windows下sql server2012安装流程

准备工作 确认系统要求&#xff1a;确保 Windows 系统为 Windows 7 或更高版本&#xff0c;且为 64 位操作系统&#xff0c;CPU 在 2GHz 以上&#xff0c;内存 4GB 或更高。 下载安装包&#xff1a;从微软官方网站或其他可靠渠道下载 SQL Server 2012 安装包。 关闭相关软件&am…...

css之英文换行样式

在 CSS 中&#xff0c;要实现英文文本自动换行但不从单词中间断开的效果&#xff0c;可以使用 word-wrap 或 overflow-wrap 属性。以下是相关的 CSS 属性和它们的配置&#xff1a; 使用 overflow-wrap 或 word-wrap /* This property is used to handle word breaking */ .wo…...

绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 通过 Lr 软件丰富的工具和功能&#xff0c;对风景照片在色彩、影调等方面进行调整。例如利用基本参数调整选项&#xff0c;精准控制照片亮度、对比度、色温、色调等基础要素&#xff1b;运用 HSL 面板可对不同色彩的色相、饱和度以及明亮度进行单独调节&#xff1b;利…...

文件解析:doc、docx、pdf

1.doc解析 ubuntu/debian系统应先安装工具 apt-get install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr \ flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig pip install textract解析&#xff1a; import te…...

计算机网络基础:VLAN(虚拟局域网)

1. VLAN 虚拟局域网&#xff1a;可以用来隔离广播 广播和广播域&#xff1a; arp 出不了路由器&#xff0c;只能攻击内网 路由器可以隔离广播&#xff08;物理隔离&#xff09;缺点是成本高、不灵活 2. VLAN 隔离广播 静态VLAN&#xff1a;基于交换机端口号划分 动态VLAN&am…...

C++学习笔记(十一)——循环结构

循环结构的作用 循环结构用于重复执行某一代码块&#xff0c;直到满足特定条件后退出循环。 C 提供了以下三种循环结构&#xff1a; for 循环&#xff08;确定次数的循环&#xff09;while 循环&#xff08;条件控制的循环&#xff09;do-while 循环&#xff08;至少执行一次的…...

【C++】二叉树相关算法题

一、根据二叉树创建字符串 题目描述&#xff1a; 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 “()” 表示&#xff0c;转化后需要省略所有…...

物联网IoT系列之MQTT协议基础知识

文章目录 物联网IoT系列之MQTT协议基础知识物联网IoT是什么&#xff1f;什么是MQTT&#xff1f;为什么说MQTT是适用于物联网的协议&#xff1f;MQTT工作原理核心组件核心机制 MQTT工作流程1. 建立连接2. 发布和订阅3. 消息确认4. 断开连接 MQTT工作流程图MQTT在物联网中的应用 …...

【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台&#xff08;Intelligent AI Travel Recommendation Platform&#xff09;是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…...

【Node.js入门笔记1---初始Node.js)】

Node.js入门笔记1 初始Node.js1.Node.js简介2.Node.js中js的运行环境3.Node.js 可以做什么4.Node.js 怎么学 初始Node.js 1.Node.js简介 Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境&#xff0c;用于在服务器端运行 JavaScript 代码。它让开发者可以用 Java…...

自学Java-JavaSE基础加强(多线程)

自学Java-JavaSE基础加强&#xff08;多线程&#xff09; 一、创建线程1、方式一&#xff1a;继承Thread类小结 2、方式二&#xff1a;实现Runnable接口小结 3、方式三&#xff1a;实现Callable接口4、小结 二、线程的常用方法三、线程安全1、认识线程安全2、模拟线程安全问题3…...

数字后端培训实战项目六大典型后端实现案例

Q1:请教一个问题&#xff0c;cts.sdc和func.sdc在innovus用如何切换&#xff1f;在flow哪一步切换输入cts.sdc&#xff1f;哪一步切换到func.sdc&#xff0c;具体如何操作&#xff1f; 这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的&#xff1f;针对时…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...