[AHK]用大模型写ahk脚本

问题背景

遇到程序在运行,但是在屏幕上看不到的窘境,于是想用AHK来实现一键在主屏幕上居中显示。

解决思路

手撸是不可能手撸的,我有豆包我有cursor,于是想看看她俩到底能力咋样。

提示词

复制代码
用AHK v2实现:热键Win+C 使当前窗口显示在主屏幕中间

先登场的是豆包

原始代码如下

复制代码
#c:: ; #代表Windows键,这里定义了Win+C的热键组合
{
    WinGetPos, x, y, width, height, A ; 获取当前活动窗口(A表示活动窗口)的位置和尺寸信息
    SysGet, MonitorWorkArea, MonitorWorkArea ; 获取主屏幕的工作区域(去除任务栏等占用的区域)信息
    newX := (MonitorWorkAreaRight - MonitorWorkAreaLeft - width) / 2 ; 计算新的X坐标,让窗口在水平方向居中
    newY := (MonitorWorkAreaBottom - MonitorWorkAreaTop - height) / 2 ; 计算新的Y坐标,让窗口在垂直方向居中
    WinMove, A,, newX, newY ; 将活动窗口(A)移动到计算好的新坐标位置,实现居中显示
}

点评,代码根本就不是AHK v2的语法,明显就是AHK v1的,试了一下的确能用,好吧 应该是豆包还不擅长AHK v2

后登场的是Cursor用的是claude-3.5-sonnet

代码说明很人性化

  • 代码说明:
  1. #Requires AutoHotkey v2.0 - 指定需要 AHK v2 运行环境

  2. #SingleInstance Force - 确保脚本只运行一个实例

  3. #c:: - 定义热键为 Win+C

  4. WinExist("A") - 获取当前活动窗口的句柄

  5. WinGetPos() - 获取窗口的当前位置和大小

  6. MonitorGetPrimary() - 获取主显示器

  7. MonitorGetWorkArea() - 获取显示器的工作区域(排除任务栏)

  • 计算新的窗口位置,使其在主屏幕中居中
  • WinMove() - 移动窗口到新位置

使用方法:

  1. 保存并运行脚本
  • 选择要居中的窗口
  • 按下 Win+C
  • 窗口将自动移动到主屏幕中间

原始代码

复制代码
#Requires AutoHotkey v2.0
#SingleInstance Force

; Win+C 将当前窗口居中显示在主屏幕
#c:: {
    ; 获取当前活动窗口
    activeWin := WinExist("A")
    
    ; 获取窗口大小
    winPos := WinGetPos()
    winWidth := winPos.Width
    winHeight := winPos.Height
    
    ; 获取主屏幕分辨率
    mainScreen := MonitorGetPrimary()
    monitorInfo := MonitorGetWorkArea(mainScreen)
    
    ; 计算居中位置
    newX := monitorInfo.Left + (monitorInfo.Right - monitorInfo.Left - winWidth) // 2
    newY := monitorInfo.Top + (monitorInfo.Bottom - monitorInfo.Top - winHeight) // 2
    
    ; 移动窗口到居中位置
    WinMove(newX, newY,,, activeWin)
}

点评,这个脚本看着很现代,不过有点太超前了,据我了解AHK 2.1-alpha.14 也还不支持 winPos := WinGetPos() 这种返回值为对象的方式,所以 winWidth := winPos.Width , winHeight := winPos.Height 报错是必然的。

稍微改下:

复制代码
#Requires AutoHotkey v2.0
#SingleInstance Force

; Win+C 将当前窗口居中显示在主屏幕
#c:: {
    ; 获取当前活动窗口
    activeWin := WinExist("A")
    ; 获取窗口大小
     WinGetPos( &X, &Y, &winWidth, &winHeight, activeWin)
    ; 获取主屏幕分辨率
    mainScreen := MonitorGetPrimary()
    monitorInfo := MonitorGetWorkArea(mainScreen)
    IsExisting := MonitorGetWorkArea(mainScreen, &Left, &Top, &Right, &Bottom)
    ; 计算居中位置
    newX := Left + (Right - Left - winWidth) // 2
    newY := Top + (Bottom - Top - winHeight) // 2
    ; 移动窗口到居中位置
    WinMove(newX, newY,,, activeWin)
}

可以在AHK v2 中运行了。

总结

大模型已经很强大了,只要你会提问,日常小脚本可以不用亲自动手了。君子动口不动手,老话说得好。

相关推荐
CV-deeplearning5 小时前
太方便了!一个 App 统管 15+ AI 编程工具的 Skills,再也不用来回折腾了
copilot·cursor·claudecode·ai编程工具·skillsmanager
小村儿10 小时前
马斯克AI战略封神!解散xAI,租算力,收购Cursor
openai·cursor·grok
Flynt2 天前
谷歌75%代码由AI生成?我扒了扒Claude Code的实现原理和真实效果
ai编程·claude·cursor
倔强的石头1062 天前
豆包收费了:3.45亿用户,一个“豆包型人格“的道歉经济学
豆包
卷Java4 天前
Cursor实测一周 vs Copilot一周 vs Windsurf一周,真实数据对比
cursor·windsurf
宅小年4 天前
我用了两年 Cursor,总结了 8 个省 Token 的实战技巧
ai编程·cursor
weixin_416660074 天前
豆包公式转Word,乱码解决
word·latex·豆包
Joseph Cooper4 天前
AI Agent 工具选型:OpenClaw、Hermes、Claude Code、Codex、Cursor、Copilot 怎么选
ai·copilot·cursor·codex·claude code·openclaw·hermes
小蠢驴打代码6 天前
我做了一个工具:一键同步 Claude Code、Cursor、Codex 的 MCP 和 Skills 配置
openai·claude·cursor
时光之源7 天前
Visual Studio | Marketplace创建发布者(Create Publisher)时无法创建的问题解决方案
ide·vscode·visual studio·plugin·cursor