【发布时间】:2017-09-29 10:29:47
【问题描述】:
告诉我为什么它不起作用?我进行了搜索,但没有找到如何运行几个相同的应用程序,以便您可以分别使用每个应用程序。
脚本工作,启动第一个窗口,移动它,然后第二个窗口启动,第一个窗口沿着第二个坐标移动,第二个不移动。有什么问题?
Run('c:\Program Files\CPUID\CPU-Z\cpuz.exe')
$hWnd = WinWait("[TITLE:CPU-Z; INSTANCE:1]", "", 0)
If Not $hWnd Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
Sleep(400)
WinMove($hWnd, "", 0, 645)
Run('c:\Program Files\CPUID\CPU-Z\cpuz.exe')
$hWnd2 = WinWaitActive("[TITLE:CPU-Z; INSTANCE:2]", "", 0)
If Not $hWnd2 Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
Sleep(400)
WinMove($hWnd2, "", 405, 645)
如何正确编写这样的脚本?
【问题讨论】:
-
也许从 Run() 获取 pid 并使用它来获取正确的 hWnd? ref
-
在 WinWait 中,超时“0”没有意义。您可以使用类似 15 的内容。在您的第二个语句中,我还将使用 WinWait(不是 WinWaitActive)。获取窗口后,您可以使用 WinActivate。
-
@ReFran 是的,但我放了 0,因为程序可以在加载上花费不同的时间
-
如果设置为 0 则没有等待时间。您必须使用更长的等待时间,例如 30 秒。在此等待时间内,系统会被轮询。每 250 毫秒查看请求的程序是否已启动。 30 秒后。等待/轮询过程将完成,您必须注意结果(成功或失败)
-
@ReFran,0 表示没有超时,检查documentation。它与“直到窗口存在才会继续”相同,可以通过
WinWait("Garbage_not_matching_any_title", "", 0)轻松检查,因此当前使用情况很好
标签: windows automation windows-10 autoit