AHK 找到 explorer.exe 的 pid?
AHK find pid of explorer.exe?
这与有关。
如果当前应用程序 不是 explorer.exe
,我如何在运行的 AutoHotKey 中创建一个 if 语句。这是为了防止脚本退出 explorer.exe
,它最初是这样做的(如果我在资源管理器上)。
当前脚本(根本不退出任何东西):
Pause::
WinGet,win_pid,PID,ProcessName,A
if (ProcessName != "explorer.exe") {
Run,taskkill /f /pid %win_pid%,,,
return
} else {
return
}
原始脚本(成功退出最后一个应用程序,包括资源管理器[如果那是最后一个应用程序]):
Pause::
WinGet,win_pid,PID,A
Run,taskkill /f /pid %win_pid%,,,
return
首先是你脚本中的错误:
您正在使用 WinGet with the sub-command PID.
它采用以下参数:
WinGet, OutputVar, PID [, WinTitle, WinText, ExcludeTitle, ExcludeText]
如您所见,您传递的最后两个参数没有意义。您正在尝试将 window 与标题 "ProcessName" 匹配,并且它还必须包含文本 "A".
如果您想获取进程名称,您可以使用预期的 WinGet
sub-command ,如下所示:
WinGet, output, ProcessName, A ;A, as a WinTitle, means the currently active window
MsgBox, % output
然而,没有必要这样去做。有更简单的方法。
我现在将展示并解释最佳方法,即使用 #directives 创建上下文相关的热键。
具体来说,#IfWinNotActive
是您要使用的。
在 WinTitle 参数中,我们可以使用 ahk_exe
通过其进程名称直接引用资源管理器 window。
#IfWinNotActive, ahk_exe explorer.exe
Pause::
WinGet, win_pid, PID, A
Run, taskkill /f /pid %win_pid%
return
#IfWinNotActive
现在我们有一个热键,只有当活动 window 不是资源管理器时才会触发。
这与
如果当前应用程序 不是 explorer.exe
,我如何在运行的 AutoHotKey 中创建一个 if 语句。这是为了防止脚本退出 explorer.exe
,它最初是这样做的(如果我在资源管理器上)。
当前脚本(根本不退出任何东西):
Pause::
WinGet,win_pid,PID,ProcessName,A
if (ProcessName != "explorer.exe") {
Run,taskkill /f /pid %win_pid%,,,
return
} else {
return
}
原始脚本(成功退出最后一个应用程序,包括资源管理器[如果那是最后一个应用程序]):
Pause::
WinGet,win_pid,PID,A
Run,taskkill /f /pid %win_pid%,,,
return
首先是你脚本中的错误:
您正在使用 WinGet with the sub-command PID.
它采用以下参数:
WinGet, OutputVar, PID [, WinTitle, WinText, ExcludeTitle, ExcludeText]
如您所见,您传递的最后两个参数没有意义。您正在尝试将 window 与标题 "ProcessName" 匹配,并且它还必须包含文本 "A".
如果您想获取进程名称,您可以使用预期的 WinGet
sub-command ,如下所示:
WinGet, output, ProcessName, A ;A, as a WinTitle, means the currently active window
MsgBox, % output
然而,没有必要这样去做。有更简单的方法。
我现在将展示并解释最佳方法,即使用 #directives 创建上下文相关的热键。
具体来说,#IfWinNotActive
是您要使用的。
在 WinTitle 参数中,我们可以使用 ahk_exe
通过其进程名称直接引用资源管理器 window。
#IfWinNotActive, ahk_exe explorer.exe
Pause::
WinGet, win_pid, PID, A
Run, taskkill /f /pid %win_pid%
return
#IfWinNotActive
现在我们有一个热键,只有当活动 window 不是资源管理器时才会触发。