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 mouse

def 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, title

def 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!

相关推荐
研究点啥好呢1 分钟前
3月22日GitHub热门项目推荐|网页浏览,何须手动
人工智能·python·开源·github
三块可乐两块冰5 分钟前
【机器学习笔记三十二】机器学习三十二
python
jing-ya13 分钟前
day 59 图论part10
java·开发语言·数据结构·算法·图论
love530love14 分钟前
ComfyUI-3D-Pack:Windows 下手动编译 mesh_inpaint_processor C++ 加速模块
c++·人工智能·windows·python·3d·hunyuan3d·comfyui-3d-pack
vx_biyesheji000124 分钟前
计算机毕业设计:Python多源新闻数据智能舆情挖掘平台 Flask框架 爬虫 SnowNLP ARIMA 可视化 数据分析 大数据(建议收藏)✅
爬虫·python·机器学习·数据分析·django·flask·课程设计
m0_5879589525 分钟前
机器学习与人工智能
jvm·数据库·python
2501_9083298528 分钟前
Python入门:从零到一的第一个程序
jvm·数据库·python
雾隐潇湘32 分钟前
C++——第三篇 继承与多态
开发语言·c++
Marye_爱吃樱桃33 分钟前
MATLAB R2024b的安装、简单设置——保姆级教程
开发语言·matlab
旺仔.29133 分钟前
Linux系统基础详解(二)
linux·开发语言·网络