关闭多个 Autohotkeys 应用程序

Closing more than one Autohotkeys applications

我有 4 个应用程序,我必须使用 4 个不同的 autohotkey exe 应用程序才能始终处于最前面的未来。但是,我想关闭所有这些或终止它们的进程。 我也尝试使用 ESC::ExitAppProcess.Kill() 函数,但只有一个正在关闭。

这是我的代码:

#SingleInstance Force

WinSet, AlwaysOnTop, Toggle, Bot
Winset, Style, -0xC00000, Bot

^!p::Pause
*ESC::ExitApp
return

其他应用相同但不同Windows标题名称

Process[] bottom = Process.GetProcessesByName("bottom");
//MessageBox.Show(workers.Length.ToString());
foreach (Process bot in bottom)
{
    bot.Kill();
    bot.WaitForExit();
    bot.Dispose();
}

Process[] left = Process.GetProcessesByName("left");
//MessageBox.Show(workers.Length.ToString());
foreach (Process l in left)
{
    l.Kill();
    l.WaitForExit();
    l.Dispose();
}

Process[] right = Process.GetProcessesByName("test1");
//MessageBox.Show(workers.Length.ToString());
foreach (Process r in right)
{
    r.Kill();
    r.WaitForExit();
    r.Dispose();
}

Process[] top = Process.GetProcessesByName("top");
//MessageBox.Show(workers.Length.ToString());
foreach (Process t in top)
{
    t.Kill();
    t.WaitForExit();
    t.Dispose();
}

SendKeys.Send("{ESC}");

根据上面的代码,我试图关闭 4 个应用程序,但只有一个正在关闭。另外,我无法在 TaskManager 运行 autohotkeys.exe files.Is 中看到任何方式 关闭或关闭所有 autohotkeys.exe 文件?提前谢谢你。

您可以使用 windows 中的 WMI 来执行此操作。

ESC::

    Query := "Select ProcessId, CommandLine from Win32_Process where name = 'Autohotkey.exe'"
 
    for process in ComObjGet("winmgmts:").ExecQuery(Query, "WQL")
        process, close, % process.ProcessId
Return