我有一个函数可以启动一些文件,然后将它们的名称更改为它们的ID:
Global $PID2 = Run("java " & $chosen & ' -jar "spigot-1.6.2-R0.1.jar"', "E:\Spill\Alle spill\Minecraft\Bungee Servers\Hub", $Hide)
WinWaitActive("C:\Windows\system32\java.exe")
WinSetTitle("C:\Windows\system32\java.exe","",$PID2)
Global $PID3 =Run("java " & $chosen & ' -jar "spigot-1.6.2-R0.1.jar"', "E:\Spill\Alle spill\Minecraft\Bungee Servers\Survival", $Hide)
WinWaitActive("C:\Windows\system32\java.exe")
WinSetTitle("C:\Windows\system32\java.exe","",$PID3)
Global $PID4 =Run("java " & $chosen & ' -jar "spigot-1.6.2-R0.1.jar"', "E:\Spill\Alle spill\Minecraft\Bungee Servers\KnarWorld", $Hide)
WinWaitActive("C:\Windows\system32\java.exe")
WinSetTitle("C:\Windows\system32\java.exe","",$PID4)
Global $PID5 =Run("java " & $chosen & ' -jar "spigot-1.6.2-R0.1.jar"', "E:\Spill\Alle spill\Minecraft\Bungee Servers\Plotworld", $Hide)
WinWaitActive("C:\Windows\system32\java.exe")
WinSetTitle("C:\Windows\system32\java.exe","",$PID5)
Global $PID1 =Run("java " & $chosen & ' -jar "BungeeCord.jar"', 'E:\Spill\Alle spill\Minecraft\bungee', $Hide)
WinWaitActive("C:\Windows\system32\java.exe")
WinSetTitle("C:\Windows\system32\java.exe","",$PID1)
我还有一个停止文件的功能:
WinActivate($PID1)
Send("end {ENTER}")
WinActivate($PID2)
Send("stop{ENTER}")
WinActivate($PID3)
Send("stop{ENTER}")
WinActivate($PID4)
Send("stop{ENTER}")
WinActivate($PID5)
Send("stop{ENTER}")
问题在于第二个功能,它不是一个接一个地找到ID并发送所需命令,而是在任何活动窗口中开始发送垃圾邮件。如何让它运行一次并停止,但如果我再次触发它仍然可以工作? 整个代码:http://pastebin.com/U8XBk4HE
答案 0 :(得分:1)
对于这类任务,有两个功能:
SendKeepActive(...)
使AutoIt 尝试在Send()的每次模拟击键之间重置活动窗口。ControlSend(...)
将键击发送到特定窗口,而不管它是否处于活动状态。答案 1 :(得分:0)
也许你应该放WinWaitActive
让它等待:
WinActivate($PID1)
WinWaitActive($PID1)
Send("end {ENTER}")