You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AutoHotKey在启动Battlefield2042时自动切换英文输入法

整合BF2042自动切换英文输入法的AHK脚本

以下是整合了自动切换英文输入法功能的完整脚本,保留了你原有所有快捷键配置:

#Persistent
OnMessage(0x0006, "WM_ACTIVATE")  ; 监听系统窗口激活事件

; 游戏通用快捷键配置
#If WinActive("ahk_exe r5apex.exe") or WinActive("ahk_exe Overwatch.exe") or WinActive("ahk_exe bfv.exe") or WinActive("ahk_exe Prospect-Win64-Shipping.exe") or WinActive("ahk_exe VALORANT-Win64-Shipping.exe") or WinActive("ahk_exe Titanfall2.exe") or WinActive("ahk_exe BF2042.exe")
{
    !Tab::Return
    #Tab::Return
    LWin::Return
    RWin::Return
    Delete::Home
    $!esc::return
    F12::!esc
}
#If

; 窗口激活时触发的处理逻辑
WM_ACTIVATE(wParam, lParam)
{
    ; 仅当窗口被激活时执行
    if (wParam = 1)
    {
        ; 获取激活窗口对应的进程名
        WinGet, exeName, ProcessName, ahk_id %lParam%
        ; 检测是否为BF2042进程
        if (exeName = "BF2042.exe")
        {
            ; 发送切换至英文(美国)输入法的消息
            SendMessage, 0x50, 0x0409, 0,, ahk_id %lParam%
        }
    }
    return
}

; CapsLock切换输入法/开关大写
AltState = 0
CapsLock::
    if (AltState = 2)
    {
        SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On"
    }
    else
    {
        KeyWait, CapsLock, T0.3
        If ErrorLevel
        {
            SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On"
            KeyWait, CapsLock
        }
        else
        {
            SetCapsLockState, Off
            SendInput {LCtrl down}{Space}{LCtrl up}
        }
    }
Return

关键修改说明

  1. 新增#Persistent确保脚本后台持续运行,添加OnMessage(0x0006, "WM_ACTIVATE")监听系统窗口激活事件,相比定时检查更高效。
  2. 新增WM_ACTIVATE函数:当任意窗口激活时,自动检测是否为BF2042进程,若是则执行SendMessage指令切换至英文输入法(0x0409是英文(美国)的区域语言ID)。
  3. 保留了你原有所有游戏快捷键配置和CapsLock切换逻辑,未做任何修改。

内容的提问来源于stack exchange,提问作者L-ING

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:00:09