如何关闭 _ArrayDisplay() window?
How to close _ArrayDisplay() window?
如何使用 AutoIt 脚本本身关闭 _ArrayDisplay()
的 window?我试过 WinClose()
:
_ArrayDisplay($aarray,"sometitle")
; do some stuff
Winclose("sometitle")
Sleep(1000)
_ArrayDisplay($barray,"anothertitle")
但失败(前一个 window 没有关闭,下一个 window 没有出现)。所以我尝试了 WinKill()
:
_ArrayDisplay($aarray,"sometitle")
; do some stuff
Winkill("sometitle")
Sleep(1000)
_ArrayDisplay($barray,"anothertitle")
然后上一个window关闭,但下一个window永远不会出现。似乎 Winkill()
杀死了 all _ArrayDisplay()
个实例。其他尝试:
_ArrayDisplay($aarray,"sometitle")
; do some stuff
While WinExists("sometitle")
Winclose("sometitle")
Sleep(100)
WEnd
Sleep(1000)
_ArrayDisplay($barray,"anothertitle")
并且:
_Arraydisplay($aarray,"sometitle")
; do some stuff
WinActivate("sometitle")
While WinExists("sometitle")
Send("!{F4}"
Sleep(100)
WEnd
Sleep(1000)
_Arraydisplay($barray,"anothertitle")
我也尝试过 Send()
使用 "!{F4}"
和 "{ALTDOWN}{SPACE DOWN}c{ALTUP}{SPACE UP}"
。全部关闭前一个_ArrayDisplay()
window失败。如何实现?
#include <array.au3>
Global $aarray[1]
Global $barray[1]
AdlibRegister('_Closer')
_Arraydisplay($aarray, 'sometitle')
Sleep(1000)
_Arraydisplay($barray, 'anothertitle')
Func _Closer()
If WinExists('sometitle') Then
WinClose('sometitle')
AdlibUnRegister('_Closer')
EndIf
EndFunc
_ArrayDisplay 是一个使用消息循环的图形用户界面。脚本保留在
循环直到事件允许退出循环。
在循环时执行操作的一个概念是注册一个函数
使用 AdlibRegister。上面注册的 _Closer 函数将是
每 250 毫秒调用一次,直到 AdlibUnRegister 可以停止函数
从被调用。
现在尝试修改"array.au3"函数_Arraydisplay()中插入超时选项(参数)的部分,感觉挺成功的..
我在 _Arraydisplay() 中添加了 3 行,如下所示。
起初,我在函数声明部分的末尾添加了超时选项参数($TimeOut=0)。
Func _ArrayDisplay(Const ByRef $aArray, $sTitle = Default, $sArrayRange = Default, $iFlags = Default, $vUser_Separator = Default, $sHeader = Default, $iMax_ColWidth = Default, $iAlt_Color = Default, $hUser_Function = Default, $TimeOut = 0)
接下来,我在函数的起点插入了一行启动计时器。
If $TimeOut > 0 Then Local $_Start = TimerInit()
最后,在 while-loop 中插入一行用于在计时器值达到 $TimeOut(秒单位)时转义 while-loop。
If $TimeOut > 0 And TimerDiff($_Start)/1000 >= $TimeOut Then ExitLoop
仅此而已..而且效果很好..
使用超时选项(7 秒)调用该函数,
Arraydisplay($aarray, 'sometitle', 7)
; do some stuff
Sleep(1000)
Arraydisplay($barray, 'anothertitle')
Func Arraydisplay(Const ByRef $aArray, $sTitle="", $TimeOut = 0)
_Arraydisplay($aArray, $sTitle, Default,Default,Default,Default,Default,Default,Default,$TimeOut)
EndFunc
当然,这不是关闭arraydisplay的解决方案window,但我认为这会对它有所帮助,所以我留下这个答案。谢谢:-)
如何使用 AutoIt 脚本本身关闭 _ArrayDisplay()
的 window?我试过 WinClose()
:
_ArrayDisplay($aarray,"sometitle")
; do some stuff
Winclose("sometitle")
Sleep(1000)
_ArrayDisplay($barray,"anothertitle")
但失败(前一个 window 没有关闭,下一个 window 没有出现)。所以我尝试了 WinKill()
:
_ArrayDisplay($aarray,"sometitle")
; do some stuff
Winkill("sometitle")
Sleep(1000)
_ArrayDisplay($barray,"anothertitle")
然后上一个window关闭,但下一个window永远不会出现。似乎 Winkill()
杀死了 all _ArrayDisplay()
个实例。其他尝试:
_ArrayDisplay($aarray,"sometitle")
; do some stuff
While WinExists("sometitle")
Winclose("sometitle")
Sleep(100)
WEnd
Sleep(1000)
_ArrayDisplay($barray,"anothertitle")
并且:
_Arraydisplay($aarray,"sometitle")
; do some stuff
WinActivate("sometitle")
While WinExists("sometitle")
Send("!{F4}"
Sleep(100)
WEnd
Sleep(1000)
_Arraydisplay($barray,"anothertitle")
我也尝试过 Send()
使用 "!{F4}"
和 "{ALTDOWN}{SPACE DOWN}c{ALTUP}{SPACE UP}"
。全部关闭前一个_ArrayDisplay()
window失败。如何实现?
#include <array.au3>
Global $aarray[1]
Global $barray[1]
AdlibRegister('_Closer')
_Arraydisplay($aarray, 'sometitle')
Sleep(1000)
_Arraydisplay($barray, 'anothertitle')
Func _Closer()
If WinExists('sometitle') Then
WinClose('sometitle')
AdlibUnRegister('_Closer')
EndIf
EndFunc
_ArrayDisplay 是一个使用消息循环的图形用户界面。脚本保留在 循环直到事件允许退出循环。
在循环时执行操作的一个概念是注册一个函数 使用 AdlibRegister。上面注册的 _Closer 函数将是 每 250 毫秒调用一次,直到 AdlibUnRegister 可以停止函数 从被调用。
现在尝试修改"array.au3"函数_Arraydisplay()中插入超时选项(参数)的部分,感觉挺成功的..
我在 _Arraydisplay() 中添加了 3 行,如下所示。 起初,我在函数声明部分的末尾添加了超时选项参数($TimeOut=0)。
Func _ArrayDisplay(Const ByRef $aArray, $sTitle = Default, $sArrayRange = Default, $iFlags = Default, $vUser_Separator = Default, $sHeader = Default, $iMax_ColWidth = Default, $iAlt_Color = Default, $hUser_Function = Default, $TimeOut = 0)
接下来,我在函数的起点插入了一行启动计时器。
If $TimeOut > 0 Then Local $_Start = TimerInit()
最后,在 while-loop 中插入一行用于在计时器值达到 $TimeOut(秒单位)时转义 while-loop。
If $TimeOut > 0 And TimerDiff($_Start)/1000 >= $TimeOut Then ExitLoop
仅此而已..而且效果很好..
使用超时选项(7 秒)调用该函数,
Arraydisplay($aarray, 'sometitle', 7)
; do some stuff
Sleep(1000)
Arraydisplay($barray, 'anothertitle')
Func Arraydisplay(Const ByRef $aArray, $sTitle="", $TimeOut = 0)
_Arraydisplay($aArray, $sTitle, Default,Default,Default,Default,Default,Default,Default,$TimeOut)
EndFunc
当然,这不是关闭arraydisplay的解决方案window,但我认为这会对它有所帮助,所以我留下这个答案。谢谢:-)