用于特定应用程序自动窗口全屏的 AutoHotkey 脚本
AutoHotkey script for automatic windowed-fullscreen on a specific app
这是我所在的位置:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode, 3
Loop { ; apparently a loop is recommended for app-as-a-trigger.
Send, ^!a
WinGet, p_exe, ProcessName, Forged Alliance, Style, Style, A {
if(Style & 0xC40000) {
WinSet, Style, -0xC40000, A
WinMaximize, A
}
Sleep, 100
}
}
return
显然,我正在尝试做到这一点,以便在 ForgedAlliance.exe 运行时删除 window 边框并使其最大化。
我有一个由热键触发的工作脚本:
LWin & f::
WinGet Style, Style, A
if(Style & 0xC40000) {
WinSet, Style, -0xC40000, A
WinMaximize, A
} else {
WinSet, Style, +0xC40000, A
WinRestore, A
}
return
现在我希望它由应用程序触发 运行。
我试过了:
If ProcessExist("ForgedAlliance.exe") {
}
return
但这没有用,这个条件总是返回真(总是执行代码)即使 FA 没有运行 瞄准我鼠标悬停的任何目标。
解决这个问题的正确方法是什么?
您的 Process Exist 检查需要进入计时器。
#Persistent
SetTimer, CheckForProcess, 100
CheckForProcess:
{
Process, Exist, ForgedAlliance.exe
if (ErrorLevel) {
; process is running
}
return
}
根据您的描述,您似乎将循环置于过程检查中。这意味着它只会检查一次。这是使用计时器的更好解决方案。
#Persistent
procName := "ForgedAlliance.exe"
SetTimer, CheckProc, 2000
Return
CheckProc:
If (!ProcessExist(procName))
Return
WinGet Style, Style, % "ahk_exe " procName
If (Style & 0xC40000)
{
WinSet, Style, -0xC40000, % "ahk_exe " procName
WinMaximize, % "ahk_exe " procName
}
Return
ProcessExist(exeName)
{
Process, Exist, %exeName%
return !!ERRORLEVEL
}
这是我所在的位置:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode, 3
Loop { ; apparently a loop is recommended for app-as-a-trigger.
Send, ^!a
WinGet, p_exe, ProcessName, Forged Alliance, Style, Style, A {
if(Style & 0xC40000) {
WinSet, Style, -0xC40000, A
WinMaximize, A
}
Sleep, 100
}
}
return
显然,我正在尝试做到这一点,以便在 ForgedAlliance.exe 运行时删除 window 边框并使其最大化。
我有一个由热键触发的工作脚本:
LWin & f::
WinGet Style, Style, A
if(Style & 0xC40000) {
WinSet, Style, -0xC40000, A
WinMaximize, A
} else {
WinSet, Style, +0xC40000, A
WinRestore, A
}
return
现在我希望它由应用程序触发 运行。
我试过了:
If ProcessExist("ForgedAlliance.exe") {
}
return
但这没有用,这个条件总是返回真(总是执行代码)即使 FA 没有运行 瞄准我鼠标悬停的任何目标。
解决这个问题的正确方法是什么?
您的 Process Exist 检查需要进入计时器。
#Persistent
SetTimer, CheckForProcess, 100
CheckForProcess:
{
Process, Exist, ForgedAlliance.exe
if (ErrorLevel) {
; process is running
}
return
}
根据您的描述,您似乎将循环置于过程检查中。这意味着它只会检查一次。这是使用计时器的更好解决方案。
#Persistent
procName := "ForgedAlliance.exe"
SetTimer, CheckProc, 2000
Return
CheckProc:
If (!ProcessExist(procName))
Return
WinGet Style, Style, % "ahk_exe " procName
If (Style & 0xC40000)
{
WinSet, Style, -0xC40000, % "ahk_exe " procName
WinMaximize, % "ahk_exe " procName
}
Return
ProcessExist(exeName)
{
Process, Exist, %exeName%
return !!ERRORLEVEL
}