2

我无法创建一个小的 AutoHotkey 脚本来结束测试服务器上的所有 vsjitdebugger.exe 进程。这是我的代码:

Process, Exist, vsjitdebugger.exe
NewPID = %ErrorLevel%
if NewPID = 0
{
    MsgBox Process doesnt exist
}
else
{
    MsgBox Process exists
}


Process, WaitClose, vsjitdebugger.exe, 5
NewPID = %ErrorLevel%
if NewPID = 0
{
    MsgBox Process no longer exists
}
else
{
    MsgBox Process still exists
}

运行时,脚本告诉我(vsjitdebugger.exe)进程存在,正如我所料,但是当 WaitClose 发生时它仍然告诉我进程存在,并且当我在任务管理器中查看相同数量的 vsjitdebugger 时。 exe进程仍在运行。

我可以使用任务管理器手动结束 vsjitdebugger.exe 进程。

基本上我无法结束这些过程。谁能帮我解决这个问题?谢谢。

更新:我也尝试过这个简单的循环,但无济于事:

Loop, 100
{
    Process, Close, vsjitdebugger.exe
}

更新 2:我尝试了下面建议的以下代码,但它只是永远停留在循环中,并且没有进程被杀死:

Loop
{
    Process, Close, vsjitdebugger.exe
    Process, wait, vsjitdebugger.exe, 0.1             
    NewPID = %ErrorLevel%
    if NewPID = 0
    {
        break
    }   
}
4

3 回答 3

3

我的计算机上没有安装 Microsoft Visual Studio,因此无法使用确切的过程进行测试。我改用notepad.exe。使用您发布的简单循环,我能够成功关闭 10 个记事本实例。

以下代码在我的计算机(WinXP SP3)上运行以关闭 notepad.exe 的所有实例

Process, Exist, notepad.exe
NewPID = %ErrorLevel%
if NewPID = 0
{
    MsgBox, Process doesnt exist
}
else
{
    MsgBox, Process exists
}

Loop
{
    Process, Close, Notepad.exe
    Process, wait, Notepad.exe, 0.1     
    NewPID = %ErrorLevel%
    if NewPID = 0
    {
        break
    }   
}
Process, WaitClose, Notepad.exe
MsgBox, this works

我不确定这是否可能是任何问题的原因,但WaitClose命令不会关闭进程,它只会等待进程不再存在。

于 2009-10-12T15:03:04.167 回答
2

假设你有一个带有 taskkill.exe 的系统(我知道 Windows XP 有,而且我相信之后的所有版本也有),你可以使用这一行:

Run, %comspec% /c "taskkill /F /IM vsjitdebugger /T"
于 2009-10-15T21:18:39.037 回答
1

我刚刚升级到 Windows 7,发现我遇到了同样的问题,无法关闭进程。对我有用的是在 XP 兼容模式下运行程序。

于 2010-03-01T21:56:53.327 回答