IT评测·应用市场-qidao123.com
标题:
Python实现鼠标点击获取窗口历程信息
[打印本页]
作者:
守听
时间:
2025-3-10 22:18
标题:
Python实现鼠标点击获取窗口历程信息
最近遇到挺无解的一个问题:电脑上莫名其妙出现一个白色小方块,点击没有反应,关也关不掉,想知道它和哪个软件有关还是显卡出了问题,也找不到思路,就想着要不获取一下它的历程号看看。
于是写了一个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!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4