如何通过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
关键修改说明
- 新增
#Persistent确保脚本后台持续运行,添加OnMessage(0x0006, "WM_ACTIVATE")监听系统窗口激活事件,相比定时检查更高效。 - 新增
WM_ACTIVATE函数:当任意窗口激活时,自动检测是否为BF2042进程,若是则执行SendMessage指令切换至英文输入法(0x0409是英文(美国)的区域语言ID)。 - 保留了你原有所有游戏快捷键配置和CapsLock切换逻辑,未做任何修改。
内容的提问来源于stack exchange,提问作者L-ING
相关产品推荐
相关产品推荐

