如何同时在多台PC上运行AutoHotKey脚本,从一个地方控制



对于一些负载测试模拟,我正在研究使用 AHK 1.1 编写脚本。问题是我们有一个具有多个工作站的客户端-服务器设置,所以我真的希望能够触发相同的脚本(甚至变体)同时在多台 PC 上运行,以准确模拟多个用户都在锤击系统。

更有用的是确保相同的测试恰好在同一时间(在某些公差范围内)发生,以检查这是否会导致问题。

最好的

方法是什么?从 AHK 本身内部执行,还是使用一些单独的远程控制工具让我在我选择的 PC 上触发脚本?

使用

ahk,您将需要脚本充当服务器和客户端,因此无论使用哪种方法,都需要运行它们......

至于 TCP/IP,你可以这样做,你只需要找出你的脚本是否可以使用任何可用/打开的帖子......

前几天我刚刚帮助一个澳大利亚人设置了很多服务器/客户端脚本

使用 Bentschi 的套接字类看起来像这样

服务器:

;Server
#include Socket.ahk
myTcp := new SocketTCP()
myTcp.bind("addr_any", 54321)
myTcp.listen()
myTcp.onAccept := Func("OnTCPAccept")
return
OnTCPAccept(this)
{
    newTcp := this.accept()
    newTcp.onRecv := func("OnTCPRecv")
    newTcp.sendText("Connected")
}
OnTCPRecv(this)
{
    msgbox % this.recvText()
}

客户:

;Client
#include Socket.ahk
myTcp := new SocketTCP()
myTcp.connect("your servers A_IPAddress1", 54321) ; lokal
myTcp.onRecv := Func("OnTcpRecv")
return
OnTcpRecv(this)
{
    ToolTip % this.RecvText()
}

但是要使用和/或设置类似的东西,您可能需要知道哪些端口在网络上可用,或者能够根据需要更改设置。

TCP/IP 脚本的速度在低毫秒内(在我的网络上低于 20),所以没有真正的容忍度可言。

希望对你有帮助

正如Sidola所写,您可以检查共享文件夹中的某些文件或文件夹。您可以使用IfExists 命令。下面是示例:

Loop
{
        IfExist, c:a.txt
        {
                break
        }
}
;code to execute if c:a.txt exists comes below.
MsgBox, 1




您还可以添加睡眠命令以减轻对hdd的压力,例如下面的代码:

Loop
{
        IfExist, c:a.txt
        {
                break
        }
        Sleep, 1000
}
;code to execute if c:a.txt exists comes below.
MsgBox, 1




另外,请始终使用AutoHotkey及其从 http://ahkscript.org/的文档(当前最新版本,新的官方网站)!AutoHotkey及其 autohotkey.com 文档已经过时,使用它们可能会遇到一些问题!

我无法提供实际代码,但是有一种方法可以通过 Admin$ 共享将服务注入您的 LAN 机器并远程控制它。这样,AHK就不需要一直在LAN计算机上运行。
我不知道这究竟是如何完成的,但是 PsShutdown 这样做是为了休眠 LAN PC,这通常是不可能的。

如果您真的设法做到了,如果您可以分享它,那就太好了。

最新更新