如何使用AutoHotKey将屏幕上的任何窗口居中
本篇文章给大家分享《如何使用AutoHotKey将屏幕上的任何窗口居中》,覆盖了文章的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。
至少在 Windows 上,任何窗口都可能在屏幕上的任何位置弹出,这不是很烦人吗? 每天的随机性是否让您感到紧张,并且您更愿意更好地控制窗口在屏幕上的位置? 好吧,现在你可以了,感谢 AutoHotKey。
在本教程中,我们将了解如何使用 AutoHotKey 脚本解决此问题。 我们将建造它以便它移动 任何 通过按键将窗口移至屏幕中央。 听起来很甜? 让我们看看它是如何完成的!
如何使用 AutoHotKey 设置窗口居中热键
创建脚本时的一半战斗是在输入单个字符之前就想好它的工作方式。 所以,让我们用简单的英语制定这样一个行动计划,然后我们将“变异”成一个脚本。
“问题”窗口有
Windows(如“我们屏幕上的矩形物体”,而不是操作系统)倾向于在屏幕上的任何位置弹出。 它会让人分心,而且当它反复发生时也会很烦人。 尤其是在处理出现在不同位置的多个请求者时,期待用户输入。
问题的解决方案
除了将击键和鼠标点击发送到任何窗口之外,AutoHotKey 还可以操作它们。 过去我们看到了如何使用 AutoHotKey 使用键盘快捷键将窗口“始终置于顶部”。 不过,这一次,我们将利用 AutoHotKey 的窗口操作能力来:
- “读取”活动窗口的 ID。
- 还“读取”它的尺寸(宽度和高度)。
- “读取”显示器的尺寸。
- 结合显示器和窗口的尺寸来计算在屏幕中心呈现所述窗口的最佳坐标。
- 将窗口移动到这些坐标。
最后,我们将上面的内容映射到一个快捷方式。 这样,您可以将其称为“按需”,而不是将其应用于 全部 windows – 这可能会干扰全屏应用程序和游戏。
请注意,在本教程中,我们将直接研究 AutoHotKey。 如果您不熟悉它并想提前了解更多信息,请查看我们为初学者准备的快速 AutoHotKey 指南。

一、设置热键
我们提到了如何将我们将创建的函数映射到快捷方式。 但是,如果我们从那部分开始将其排除在外,可能会更好。
首先从 AutoHotKey 的官方网站下载安装程序。 选择“当前”版本,而不是 v2 beta 或已弃用的 1.0 版本。 然后,将其安装在您的 PC 上。
启动文件资源管理器(最快的方法是使用 Windows 键 + E 组合键)并移动到要创建脚本的路径。 安装 AutoHotKey 后,您将在右键菜单中出现一些新选项。 因此,右键单击文件资源管理器窗口的空白区域并选择 新建 > AutoHotKey 脚本.
为脚本文件命名,然后右键单击它并 编辑 它。 如果您没有使用代码友好的文本编辑应用程序,例如 Visual Studio Code 或 Notepad++,请使用 Windows 记事本。 避免使用像写字板这样的编辑器,它们可能会在您的“代码”中添加无用的(出于目的)语法。
在您选择的编辑器中,您会看到 AutoHotKey 脚本顶部已经预先填充了一些行。 出于稳定性和兼容性的原因,它们在那里。 它们是可调整的,但在本教程中保持原样。
在它们下方“移动”两三行,然后输入将启动您的功能的快捷方式。 您可以通过使用“+”代表 Shift、“^”代表 CTRL、“!”来制作组合键。 用于 Alt,“#”用于 Windows 键,以及键盘上的任何“普通”键(字母和数字)。
例如,要让 CTRL + Y 组合启动您的脚本,请使用:
^y::
双“:”就像在说,“嘿,AutoHotKey,请将左侧的字符串或组合键映射到右侧的所有内容”。
按 Enter 键“移动”两到三行,然后键入“return”,这将标记特定函数的结束。 完整的结果应如下所示:
^y:: ; This is a comment. return
“;这是一条评论。” 行就是这样,AutoHotKey 不会执行的脚本“代码”中的注释。 它用于文档目的,以标记我们将在以下步骤中输入脚本“代码”的位置。
如果您过去曾按照我们的指南使用 AutoHotKey 创建特定于应用程序的热键,在这种情况下……不要。 您希望窗口居中的热键“全局”居中 任何 从窗口 任何 应用程序。 如果你将它“绑定”到一个特定的应用程序,它只会在这个应用程序的窗口上起作用。
获取活动窗口的详细信息
我们希望我们的快捷方式作用于活动窗口,并且我们还需要它的尺寸来进行计算。 我们可以通过以下方式找到这些详细信息:
WinGetTitle, ActiveWindowTitle, A WinGetPos,,, Width, Height, %ActiveWindowTitle%
将我们在上一节中添加到脚本中的注释行替换为上面的两行。 结果?
- 第一行获取活动窗口的标题。
- 第二行读取它的宽度和高度,并将它们映射到单词/变量“宽度”和“高度”,接下来我们将使用它们进行计算。
我们得到了活动窗口的详细信息,但我们还需要监视器的可见区域的尺寸来实现我们的目标。 值得庆幸的是,找到这些更容易。
主监控区域呢?
我们不需要额外的命令来找到我们的主显示器的宽度和高度。 AutoHotKey 带有两个已经为我们包含该信息的预设变量:“A_ScreenWidth”和“A_ScreenHeight”。
因此,当您在下一节中看到它们时,它们已经“包含”了主监视器的宽度和高度。 无需为它们分配正确的值。 因此,我们可以直接在计算中使用它们。
计算目标位置的时间
我们可以将计算直接包含在我们需要它们的脚本点中。 尽管如此,如果我们将它们映射到两个变量和 然后 在我们的脚本中使用这些变量。
因此,让我们选择“TargetX”作为将保持水平坐标的变量,将“TargetY”作为具有垂直坐标的变量,我们应该在其中移动窗口以使其显示在屏幕中心。
TargetX := (A_ScreenWidth/2)-(Width/2) ; Here we calculate the horizontal window target... TargetY := (A_ScreenHeight/2)-(Height/2) ; ...and here the vertical one.
让我们用简单的英语解读这些行:
- “TargetX”和“TargetY”是两个变量。
- “:=” 通知 AutoHotKey 变量应该等于右边的计算结果,并且这些结果应该被视为数字。
- “(A_ScreenWidth/2)” 将整个显示器的宽度除以 2。
- “(Width/2)” 对活动窗口的宽度做同样的事情。
有了上面,我们从屏幕宽度的一半中减去活动窗口宽度的一半。 剩下的是窗口左侧的空间 – 从屏幕左侧到窗口应该出现的位置。 第二行做同样的事情,但高度。
现在重新定位窗口
配备从我们上面看到的神秘命令中获得的全能知识,我们现在可以制作完成窗口传送仪式的魔法咒语。 或者,简单地说,使用 AutoHotKey 的“WinMove”命令在屏幕上移动窗口。
WinMove 期望我们向它“提供”至少三个信息来完成它的工作:目标窗口的标题和移动它的坐标。 由于我们已经将这些信息映射到变量,因此命令很简单:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
在上面:
- “WinMove”是移动窗口的 AutoHotKey 命令。
- “%ActiveWindowTitle%”是活动窗口标题映射的变量。
- “%TargetX%”和“%TargetY%”是移动窗口的水平和垂直坐标。
您还可以使用 WinMove 调整窗口大小,跳过标题或内容中带有特定文本字符串的窗口等。由于这些功能超出了本文的范围,请查看 AutoHotKey 关于 WinMove 命令的官方文档以了解更多信息。
最终剧本
最后,我们到达了旅程中最具挑战性的部分。 为下一步做好准备,希望您保存脚本,然后……运行它。
是的,就是这样 – 脚本已经完成,除了试一试之外别无他法。 使用您定义的快捷方式,任何活动窗口都会移动到屏幕的中心。
在文本编辑器中打开的最终脚本文件应如下所示:
; SendMode Input ; Recommended fornew scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. ^y:: WinGetTitle, ActiveWindowTitle, A ; Get the active window's title for "targetting" it/acting on it. WinGetPos,,, Width, Height, %ActiveWindowTitle% ; Get the active window's position, used for our calculations. TargetX := (A_ScreenWidth/2)-(Width/2) ; Calculate the horizontal target where we'll move the window. TargetY := (A_ScreenHeight/2)-(Height/2) ; Calculate the vertical placement of the window.
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY% ; Move the window to the calculated coordinates.
return
请注意,您可以复制上面的脚本,将其粘贴到记事本或类似的文本编辑器中,然后使用 AHK 扩展名保存。 然后,在安装 AutoHotKey 的情况下“运行”它,以便在您按下 CTRL + Y 时将任何窗口居中。如果您不喜欢该快捷方式,请将“^y::”行调整为不同的组合键。 例如, !+c::
会将函数映射到 Shift + Alt + C 组合键。
轨道
为了您的方便,我们决定召唤并包含一个辅助脚本,该脚本将对具有双显示器设置的用户有用。
为了简化本文,我们以注释的形式包含了有关脚本如何在其中工作的信息。 您可以从迭代中删除它们。
它与上面脚本的不同之处在于我们还添加了一个 PositionToggle 变量和一些“IF 逻辑”。 然后我们使用它们在监视器之间“轻弹”窗口。 我们应该注意到,这是一个不雅且“hack-y”的问题解决方案。 但是,我们更喜欢它而不是更简化的代码,因为这种方法对于不熟悉 AutoHotKey 的每个人来说更容易理解和调整。
; SendMode Input ; Recommended fornew scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. PositionToggle = 1 ; Use a numberas a toggle for marking on which monitor the window should appear. ^y:: WinGetTitle, ActiveWindowTitle, A WinGetPos,,, Width, Height, %ActiveWindowTitle%
If PositionToggle = 1 ; Check the toggle’s state and “do what’s between the curly brackets” if it’s setto1for our primary monitor.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2 ; “Flick“ the toggle so that if we reuse the hotkey, our active window will move to the second monitor.
}
Else If PositionToggle = 2 ; Have we used the hotkey before, “flicking“ the toggle number to the second monitor? Then the script should instead do what‘s between the following curly brackets instead of the ones above.
{
SysGet, Mon2, Monitor, 2 ; Get the second monitor‘s details
Mon2Width := Mon2Right – Mon2Left ; Calculate the second monitor‘s actual width.
Mon2Height := Mon2Bottom – Mon2Top ; Calculate the second monitor‘s actual height.
TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth ; Calculate where to move the window. Notice that we also add the primary monitor‘s width since AutoHotKey can‘t move windows on individual monitors but across their combined “surface“.
TargetY := (Mon2Height/2)-(Height/2)+Mon2Top ; Calculate the optimal vertical target for moving the window on the second monitor. Like above, the second monitor‘s vertical details are detected in relation to the primary monitor. Thus, we have to get creative to get an optimal target by acknowledging how the second monitor‘s top isn‘t equal to 0 (like the primary one‘s).
PositionToggle = 1 ; Flick the toggle back so that if we reuse the hotkey, the window will move back to the primary monitor.
}
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY% ; The actual action, moving the active window to our calculated coordinates.
return
用钥匙将窗口居中,简单的方法
现在你完成了! 如果一切正常,您现在可以随时使用新设置的热键将窗口居中。
今天关于《如何使用AutoHotKey将屏幕上的任何窗口居中》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

- 上一篇
- 列表中与 map、forEach 和其他方法的交互

- 下一篇
- 如何延长iPhone的电池寿命
-
- 文章 · 软件教程 | 48分钟前 | Python2 Python3 环境变量 RobotFramework pybot.bat
- Windows下Python2和Python3共存,RobotFrameWork使用指南
- 459浏览 收藏
-
- 文章 · 软件教程 | 2小时前 | 动态调用 DLL生成 DLL导出 DLL导入 Windows32API
- DLL生成与使用全攻略
- 265浏览 收藏
-
- 文章 · 软件教程 | 2小时前 | ROWID 时间格式 科学计数法 TOAD PLSQLDeveloper
- TOAD与PLSQL日期、rowid、TNSNAME修改攻略
- 473浏览 收藏
-
- 文章 · 软件教程 | 3小时前 |
- Win11免网安装小技巧,跳过网络连接
- 354浏览 收藏
-
- 文章 · 软件教程 | 11小时前 | 系统设置 PowerShell 第三方软件 截图保存路径 OneDrive设置
- win10截图消失未保存问题解决攻略
- 471浏览 收藏
-
- 文章 · 软件教程 | 11小时前 |
- win11家庭版与专业版功能大揭秘
- 337浏览 收藏
-
- 文章 · 软件教程 | 11小时前 | Dropbox FirebugLite WebDeveloper FirefoxFontInspector Codeanywhere
- 10款超实用HTML/CSS工具插件及资源库推荐
- 173浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 毕业宝AIGC检测
- 毕业宝AIGC检测是“毕业宝”平台的AI生成内容检测工具,专为学术场景设计,帮助用户初步判断文本的原创性和AI参与度。通过与知网、维普数据库联动,提供全面检测结果,适用于学生、研究者、教育工作者及内容创作者。
- 6次使用
-
- AI Make Song
- AI Make Song是一款革命性的AI音乐生成平台,提供文本和歌词转音乐的双模式输入,支持多语言及商业友好版权体系。无论你是音乐爱好者、内容创作者还是广告从业者,都能在这里实现“用文字创造音乐”的梦想。平台已生成超百万首原创音乐,覆盖全球20个国家,用户满意度高达95%。
- 26次使用
-
- SongGenerator
- 探索SongGenerator.io,零门槛、全免费的AI音乐生成器。无需注册,通过简单文本输入即可生成多风格音乐,适用于内容创作者、音乐爱好者和教育工作者。日均生成量超10万次,全球50国家用户信赖。
- 21次使用
-
- BeArt AI换脸
- 探索BeArt AI换脸工具,免费在线使用,无需下载软件,即可对照片、视频和GIF进行高质量换脸。体验快速、流畅、无水印的换脸效果,适用于娱乐创作、影视制作、广告营销等多种场景。
- 26次使用
-
- 协启动
- SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
- 25次使用
-
- pe系统下载好如何重装的具体教程
- 2023-05-01 501浏览
-
- qq游戏大厅怎么开启蓝钻提醒功能-qq游戏大厅开启蓝钻提醒功能教程
- 2023-04-29 501浏览
-
- 吉吉影音怎样播放网络视频 吉吉影音播放网络视频的操作步骤
- 2023-04-09 501浏览
-
- 腾讯会议怎么使用电脑音频 腾讯会议播放电脑音频的方法
- 2023-04-04 501浏览
-
- PPT制作图片滚动效果的简单方法
- 2023-04-26 501浏览