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]