我是AutoIt的新手,并且有一个程序主要工作。
目标:在浏览器中打开一个网站,然后在一段时间(1.5小时)后关闭它。
脚本:
;Open a command prompt to start chrome from.
Run("C:\WINDOWS\system32\cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
send('"c:\Program Files\Google\Chrome\Application\chrome.exe" http://website.com' & "{ENTER}")
;Close the dos box
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
send('exit' & "{ENTER}")
; 5400000 = 1.5 hours
sleep( 5400000 );
WinWaitActive("Listen Live - Google Chrome","")
;Send("{F4}{ALTUP}")
Send("{CTRLDOWN}{SHIFTDOWN}q{SHIFTUP}{CTRLUP}")
开场很好但脚本永远不会关闭。它似乎在计时器非常短时起作用,但在它很长时却不起作用。
该脚本将通过Windows计划任务执行。我已经尝试将open / close分成两个单独的脚本,但这似乎也没有用。
我愿意接触适用于Windows的其他解决方案。
答案 0 :(得分:1)
将最后一个WinWaitActive更改为WinActivate 可能会解决您的问题,但是获取窗口句柄并通过它关闭可能是更好的方法。
另外,请确保您要查找的窗口标题确实存在。我注意到我的Google Chrome浏览器窗口标题实际上没有" - Google Chrome"在他们中。通过打开网页并使用“自动窗口信息”应用程序进行确认。单击/激活窗口时,该应用程序将显示确切的窗口标题和其他信息。而且你不必完全匹配。例如,如果窗口标题在" Listen Live - xxxx"之后可能会有所不同,那么只需查看" Listen Live - "。
尝试下面的代码,看看它是如何工作的:
; set variables
$browser_exe = "c:\Program Files\Google\Chrome\Application\chrome.exe"
$URL = "http://website.com"
$window_title = "Listen Live - Google Chrome"
$sleep_time = 5400000 ; 1.5 hours
; run the browser and pass the URL to it
Run($browser_exe & " " & $URL)
; get window handle
$window_handle = WinWait($window_title)
Sleep($sleep_time)
; close the window
WinClose($window_handle)