当前位置: 首页 > 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!

http://www.lryc.cn/news/547633.html

相关文章:

  • Mac安装jdk教程
  • 【HeadFirst系列之HeadFirst设计模式】第14天之与设计模式相处:真实世界中的设计模式
  • JDBC 完全指南:掌握 Java 数据库交互的核心技术
  • Vue父子组件传递笔记
  • 文件上传漏洞与phpcms漏洞安全分析
  • 【deepseek】辅助思考生物学问题:ICImapping构建遗传图谱gap较大
  • linux磁盘非lvm分区
  • Windows下sql server2012安装流程
  • css之英文换行样式
  • 绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 文件解析:doc、docx、pdf
  • 计算机网络基础:VLAN(虚拟局域网)
  • C++学习笔记(十一)——循环结构
  • 【C++】二叉树相关算法题
  • 物联网IoT系列之MQTT协议基础知识
  • 【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程
  • 【Node.js入门笔记1---初始Node.js)】
  • 自学Java-JavaSE基础加强(多线程)
  • 数字后端培训实战项目六大典型后端实现案例
  • 安卓免费多功能工具:一站式解决 PDF 阅读、编辑、转换等需求
  • diffuser库使用本地模型生成图像
  • 递归—基础算法
  • 全面复习回顾——C++语法篇2
  • 探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比
  • Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴
  • 无人机遥控器扩频技术解析!
  • Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践
  • OpenBMC:BmcWeb构造connect对象
  • ORB-SLAM2源码学习(六):相机跟踪(局部地图跟踪和关键帧创建)
  • WordPress使用(3)