利用 AutoHotKey 实现 win10 多显示器(扩展模式)快速切换 |
您所在的位置:网站首页 › 显示器双模式切换好么 › 利用 AutoHotKey 实现 win10 多显示器(扩展模式)快速切换 |
在日常办公中我们经常会使用到外接显示屏来辅佐我们 提高办公效率 然而多显示屏每次切换屏幕都要用鼠标来移动切换, 对鼠标的依赖非常重且非常麻烦😡 尤其是我左边显示屏是 IDE 或者 shell 终端, 右边是浏览器 于是乎在知乎上看到一篇这样的文章👇 MoveMouseToMonitor请问win10接双显示器(扩展模式)怎么把鼠标游标切换到第二台显示器上? 看完这篇文章瞬间就觉得它能够完美解决我的问题, 于是乎我安装了答主分享的 MoveMouseToMonitor.exe 工具 然而使用过后似乎仍不能满足我的需求, 因为它仅仅实现了鼠标的光标由 A显示屏 👉 B显示屏 的移动 而实际的聚焦效果仍然保留在原来的 A显示屏 上 通俗易懂来讲就是 鼠标的聚焦 和 键盘的聚焦 是两码事 这样就导致我的鼠标光标从 shell 终端 或者 IDE 切换到浏览器后 输入键盘时, 实际的输出仍然会停留在 shell 终端 或者 IDE 的上 MoveMouseToMonitor V2.0这。。。实现了但没完全实现我想要的效果😂 于是我就花了亿点点时间研究了下 AutoHotKey 的语法和这个MoveMouseToMonitor.exe 程序的源代码 然后再此基础上做了一点点改动, 具体改动为当执行完 PerformMove 函数成功移动鼠标后 创建一个 ActivateWindowByMousePosition 函数, 获取当前鼠标位置的窗口 title WinActivate 会根据鼠标窗口的 title 来激活目标窗口, 把键盘的聚焦也切换到该窗口, 从而真正实现切换并激活窗口👍 PerformMove(MoveMonNum, OffX, OffY) { global MoveX, MoveY Gosub, CheckNumMonsChanged RestoreDPI := DllCall("SetThreadDpiAwarenessContext", "ptr", -3, "ptr") SysGet, Coordinates%MoveMonNum%, Monitor, %MoveMonNum% Left := Coordinates%MoveMonNum%Left Right := Coordinates%MoveMonNum%Right Top := Coordinates%MoveMonNum%Top Bottom := Coordinates%MoveMonNum%Bottom If (OffX = -1) MoveX := Left + (Floor(0.5 * (Right - Left))) Else MoveX := Left + OffX If (OffY = -1) MoveY := Top + (Floor(0.5 * (Bottom - Top))) Else MoveY := Top + OffY DllCall("SetCursorPos", "int", MoveX, "int", MoveY) Sleep, 10 DllCall("SetCursorPos", "int", MoveX, "int", MoveY) DllCall("SetThreadDpiAwarenessContext", "ptr", RestoreDPI, "ptr") Gosub, ActivateWindowByMousePosition Return } ActivateWindowByMousePosition: MouseGetPos, , , id, control WinGetTitle, title, ahk_id %id% WinActivate, %title% Return Github传送门👇https://github.com/chuchu-z/MoveMouseToMonitorV6 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |