Windows本身可以实现“通过将鼠标是停在密口上来激活窗口”,但不能进一步细化设置
具体而言:
如果鼠标在同一块屏幕内移动时,窗口焦点不跟随鼠标位置;
如果鼠标移到另一块屏幕,窗口焦点将跟随鼠标位置
Windows本身可以实现“通过将鼠标是停在密口上来激活窗口”,但不能进一步细化设置
具体而言:
如果鼠标在同一块屏幕内移动时,窗口焦点不跟随鼠标位置;
如果鼠标移到另一块屏幕,窗口焦点将跟随鼠标位置
gemini秒了,ahk v2:
#Requires AutoHotkey v2.0
#SingleInstance Force
; 设置检测频率(毫秒)
SetTimer(MonitorFocusSwitcher, 150)
MonitorFocusSwitcher() {
static lastMonitor := 0
CoordMode "Mouse", "Screen"
MouseGetPos(&mX, &mY, &idUnderMouse)
; 获取鼠标当前所在的显示器句柄 (MonitorFromPoint)
hMonitor := DllCall("User32.dll\MonitorFromPoint", "Int64", (mX & 0xFFFFFFFF) | (mY << 32), "UInt", 2, "Ptr")
; 如果显示器发生跨越
if (hMonitor != lastMonitor) {
if (idUnderMouse) {
try {
; 获取该窗口的类名
thisClass := WinGetClass("ahk_id " idUnderMouse)
; 过滤逻辑:
; WorkerW / Progman: Windows 桌面
; Shell_TrayWnd / Shell_SecondaryTrayWnd: 任务栏
if !(thisClass ~= "i)^(WorkerW|Progman|Shell_TrayWnd|Shell_SecondaryTrayWnd)$") {
WinActivate("ahk_id " idUnderMouse)
}
}
}
lastMonitor := hMonitor
}
}