这是我在的地方:
#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运行时,它的窗口边框被移除并且最大化。
我有一个由热键触发的工作脚本:
LWin & f::
WinGet Style, Style, A
if(Style & 0xC40000) {
WinSet, Style, -0xC40000, A
WinMaximize, A
} else {
WinSet, Style, +0xC40000, A
WinRestore, A
}
return
现在我希望它可以通过App运行来触发。
我试过了:
If ProcessExist("ForgedAlliance.exe") {
}
return
但是没有用,这个条件总是返回true(总是执行代码),即使FA没有在我的鼠标悬停的目标上运行。
解决这个问题的正确方法是什么?
答案 0 :(得分:1)
您的流程存在检查需要进入计时器。
#Persistent
SetTimer, CheckForProcess, 100
CheckForProcess:
{
Process, Exist, ForgedAlliance.exe
if (ErrorLevel) {
; process is running
}
return
}
答案 1 :(得分:1)
根据您的描述,听起来您将循环放在流程检查中。这意味着它只会检查一次。这是一个使用计时器的更好的解决方案。
#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
}