在窗口上自动更改名称并在WinActivate中使用它

时间:2013-07-26 16:49:45

标签: autoit

我有一个函数可以启动一些文件,然后将它们的名称更改为它们的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

2 个答案:

答案 0 :(得分:1)

对于这类任务,有两个功能:

  • SendKeepActive(...)使AutoIt 尝试在Send()的每次模拟击键之间重置活动窗口。
  • ControlSend(...)将键击发送到特定窗口,而不管它是否处于活动状态。

答案 1 :(得分:0)

也许你应该放WinWaitActive让它等待:

WinActivate($PID1)
WinWaitActive($PID1)
Send("end {ENTER}")