无法使用AutoHotkey关闭某些进程

时间:2009-10-12 04:12:56

标签: .net autohotkey

我无法创建一个小型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
    }   
}

3 个答案:

答案 0 :(得分: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 命令不会关闭进程,它只会等待进程不再存在。

答案 1 :(得分:2)

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

Run, %comspec% /c "taskkill /F /IM vsjitdebugger /T"

答案 2 :(得分:1)

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