找回密码
 加入
搜索
查看: 4099|回复: 7

[系统综合] 为什么IE创建了后会死掉,不会自动退出脚本呢?[已解决]

  [复制链接]
发表于 2012-10-26 14:31:26 | 显示全部楼层 |阅读模式
本帖最后由 Neuis 于 2012-11-1 10:08 编辑
#include <IE.au3>
#Include <ScreenCapture.au3>
Local $oIE = _IECreate ("about:blank",1,1,0)
_IEDocWriteHTML ( $oIE, "<script> javascript: alert (navigator.userAgent)</script>")
WinWait("Message from webpage")
If FileExists(@WorkingDir & "\IECheck.jpg") Then
FileDelete(@WorkingDir & "\IECheck.jpg")
EndIf
_ScreenCapture_CaptureWnd(@WorkingDir & "\IECheck.jpg",WinWait("Message from webpage"))
Sleep (1000)
WinKill("Message from webpage")
WinKill("Blank Page - Windows Internet Explorer")
exit
 楼主| 发表于 2012-10-26 14:34:08 | 显示全部楼层
求帮助阿
发表于 2012-10-26 16:40:11 | 显示全部楼层
winwait的问题,建议所有的程序都尽量不要使用带有wait的命令或函数,除非不得已
发表于 2012-10-26 21:28:56 | 显示全部楼层
回复 1# Neuis
万一等了一辈子都没有等到不就是当机了吗?
发表于 2012-10-27 12:43:18 | 显示全部楼层
你那玩意是英文系统的吧,中文是这个提示,标题不一样滴
WinWait("来自网页的消息")

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-10-27 13:51:32 | 显示全部楼层
是英文系统,主要我想不明白winwait出了什么问题,而且奇怪的是编译成EXE后运行第一次手动WinKill("Message from webpage")

WinKill("Blank Page - Windows Internet Explorer")后不退出脚本,再次运行第二次exe后却可以了。
发表于 2012-10-29 14:04:00 | 显示全部楼层
建议用循环检测来代替winwait函数,因为winwait没有超时选项
例如
for $i=0 to 100
  if WinExists("来自网页的消息") then exitloop
  sleep(100)
  if $i=100 then MsgBox(0, "Error", "TimeOut!")
next
 楼主| 发表于 2012-10-29 14:57:42 | 显示全部楼层
回复 7# unique009
首先谢谢你的帮助,当还是不行,我刚找到了原因了,是因为
(来至IE的UDF)
Func _IEDocWriteHTML(ByRef $o_object, $s_html)
        If Not IsObj($o_object) Then
                __IEErrorNotify("Error", "_IEDocWriteHTML", "$_IEStatus_InvalidDataType")
                Return SetError($_IEStatus_InvalidDataType, 1, 0)
        EndIf
        If Not __IEIsObjType($o_object, "browserdom") Then
                __IEErrorNotify("Error", "_IEDocWriteHTML", "$_IEStatus_InvalidObjectType", "Expected document element")
                Return SetError($_IEStatus_InvalidObjectType, 1, 0)
        EndIf
        ;
        $o_object.document.Write($s_html)
        $o_object.document.close()
        Local $oTemp = $o_object.document
        _IELoadWait($oTemp)
        Return SetError(@error, 0, -1)
EndFunc   ;==>_IEDocWriteHTML
$o_object.document.Write($s_html)
当去到这句就停掉了,我想原因是因当写完后就弹出提示框了,
$o_object.document.close()
这段无法运行,导致不能释放。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 14:02 , Processed in 0.079506 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表