守听 发表于 2025-3-10 22:18:18

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

最近遇到挺无解的一个问题:电脑上莫名其妙出现一个白色小方块,点击没有反应,关也关不掉,想知道它和哪个软件有关还是显卡出了问题,也找不到思路,就想着要不获取一下它的历程号看看。
https://i-blog.csdnimg.cn/direct/679b0908ee154c30a3578d9cb88aff4d.png
于是写了一个Python脚本,可以通过鼠标点击快速获取恣意窗口的详细信息,包罗窗口标题、历程PID和程序路径。特别适合必要快速定位窗口来源或排查非常历程的场景。 
利用方法


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


[*] 核心组件 :

[*]pynput:监听全局鼠标点击变乱
[*]pywin32:获取窗口句柄和历程ID
[*]psutil:查询历程详细信息

[*] 技能流程 :

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

安装依赖

pip install pynput pywin32 psutil 注意事项


[*]必要Windows体系运行
[*]获取体系级窗口(如使命栏)大概表现路径为Unknown
[*]某些受保护历程大概必要管理员权限运行脚本
[*]点击速率过快大概导致坐标捕获偏差,建议点击后稍作停顿
完备代码

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!
https://i-blog.csdnimg.cn/direct/8693573b7bfe4d62a443716e6f7f0353.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python实现鼠标点击获取窗口历程信息