【已解决】如何清除Cookies 与 关闭IE消息弹出窗
本帖最后由 styledream 于 2010-9-4 17:55 编辑最近在学习网页的投票,然而对于如果清除Cookies这个问题研究了好久仍然没能有结果
目前有两个问题没能解决:
【已解决 - 使用多进程,解决方法见8楼】1.点击“提交”按钮后会弹出一个投票成功的对话框,无法关闭
【已解决 - 解决方法已添加入脚本中】2.此网站有Cookies限制,试了好多方法仍然无效,虽然可以把“Internet 属性”->“隐私”设置为“阻止所有 Cookies”来屏蔽Cookies,但有些网站此方法行不通
PS: 提供另一个不错的多进程教程
麻烦各位帮忙看看,提供一下思路或具体的解决方法
以下是程序的代码:#include <IE.au3>
#include <GUIConstants.au3>
Global $width = 628, $height = 700
$Url = "http://www.surfingcenter.cn:8080/cyy/xiangxi.jsp?softId=1568"
$oIE = ObjCreate("Shell.Explorer.2")
$myGUI = GUICreate("关于清除网页Cookies问题", $width, $height, (@DesktopWidth - $width) / 2, (@DesktopHeight - $height) / 2 - 30)
$GUIActiveX = GUICtrlCreateObj($oIE, -60, -220, 1100, 870)
$btnReLoad = GUICtrlCreateButton("清除Cookies", 5, 660, 100, 30)
$btnPost = GUICtrlCreateButton("投票", 125, 660, 100, 30)
$LabInfo = GUICtrlCreateLabel("", 240, 660, 600, 100)
GUICtrlSetColor($LabInfo, 0xf91f19)
GUICtrlSetFont(-1, 20)
$oIE.navigate($Url)
GUISetState()
AdlibRegister("MIE_Close", 500)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $btnReLoad
ReLoad()
Case $msg = $btnPost
_IEImgClick($oIE, "http://www.surfingcenter.cn:8080/cyy/images/index__92.gif", "src", 0, 0);模拟点击投票按钮
EndSelect
WEnd
Func ReLoad()
GUICtrlSetData($LabInfo, "正在清除Cookies,请稍候....")
$IEDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "Version")
$result = StringLeft($IEDir, 1)
If $result = "6" Then
Dim $F = FileOpen(@TempDir & "\SystemClean.vbs", 2)
FileWriteLine($F, 'CreateObject("Shell.Application").NameSpace(32).Items().InvokeVerbEx("delete")') ;清除 IE6-Cookies
FileClose($F)
RunWait(@ComSpec & " /c call " & @TempDir & "\SystemClean.vbs", @ScriptDir, @SW_HIDE)
Else
RunWait(@ComSpec & " /C rundll32.exe " & @SystemDir & "\InetCpl.cpl,ClearMyTracksByProcess 4351", "", @SW_HIDE) ;清除 IE7-Cookies
EndIf
GUICtrlSetData($LabInfo, "Cookies清除成功!")
EndFunc ;==>ReLoad
如果把以下代码单独写成另一个程序,则可以关闭IE的消息弹出窗,如把它整合到上面的代码中则无法发挥其效果,郁闷ing......Func MIE_Close()
; 关闭IE消息弹出窗
If WinActive("Microsoft Internet Explorer", "") Then Send("{ENTER}")
If WinActive("警告", "") Then Send("{ENTER}")
EndFunc ;==>MIE_Close 1.我在XP下实行可以关闭投票成功的对话框
2.FileDelete(@UserProfileDir & "\Cookies\*.*")
这个代码无法完全删除Cookies
请参考我的帖子,可以完全删除IE临时文件
http://www.autoitx.com/thread-17576-1-1.html 本帖最后由 styledream 于 2010-9-2 19:24 编辑
回复 2# lixiaolong
感谢 lixiaolong 兄弟的回复,困扰了多天的Cookies清除问题已经解决了,十分感谢
对于那个IE消息的弹出窗,我测试了好久
如果自己打开网页手动投票,弹出的对话框可以被关闭。
程序模拟点击投票后弹出的对话框却无法被关闭,继续等待求解 回复 3# styledream
这个我不知道原因了,我这里模拟点击投票后弹出的对话框也可以关闭。。。 回复 4# lixiaolong
啊,难道这就是传说中的灵异事件
我把代码拿到别人电脑上试试 本帖最后由 morphling12345 于 2010-9-3 07:21 编辑
我是用了辅助程序来完成的,也就是将判断窗口并关闭的子程序独立出来解决这个问题,主程序一旦遇到弹出窗口确认的就失去响应了,所以我将会弹出窗口确认的都不做响应,
例如,_IEImgClick ($oIE1, "保存为已完成", "alt",0,0)
我按网页的这个图片,就会跳出是否要关闭窗口,就失去响应了,我不让主程序等待响应,直接执行下面的代码。
子程序中和你的那个函数一样功能的
Run("2.exe",@WorkingDir)
;;;;;;主程序
;;;;;;
ProcessClose("2.exe") 回复 6# morphling12345
我也觉得很奇怪,IE的弹出窗主程序控制不了,只有用子程序才能关闭 用多进程方法可以#include <IE.au3>
#include <GUIConstants.au3>
#include <ChildProc.au3>
Global $width = 628, $height = 700
$Url = "http://www.surfingcenter.cn:8080/cyy/xiangxi.jsp?softId=1568"
$oIE = ObjCreate("Shell.Explorer.2")
$myGUI = GUICreate("关于清除网页Cookies问题", $width, $height, (@DesktopWidth - $width) / 2, (@DesktopHeight - $height) / 2 - 30)
$GUIActiveX = GUICtrlCreateObj($oIE, -60, -220, 1100, 870)
$btnReLoad = GUICtrlCreateButton("清除Cookies", 5, 660, 100, 30)
$btnPost = GUICtrlCreateButton("投票", 125, 660, 100, 30)
$LabInfo = GUICtrlCreateLabel("", 240, 660, 600, 100)
GUICtrlSetColor($LabInfo, 0xf91f19)
GUICtrlSetFont(-1, 20)
$oIE.navigate($Url)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $btnReLoad
ReLoad()
Case $msg = $btnPost
_ChildProc_Start("MIE_Close")
_IEImgClick($oIE, "http://www.surfingcenter.cn:8080/cyy/images/index__92.gif", "src", 0, 0) ;模拟点击投票按钮
EndSelect
WEnd
Func MIE_Close()
; 关闭IE消息弹出窗
$hwnd = WinWait("Microsoft Internet Explorer")
WinActivate($hwnd)
ControlClick($hwnd, "", "Button1")
EndFunc ;==>MIE_Close
Func ReLoad()
GUICtrlSetData($LabInfo, "正在清除Cookies,请稍候....")
$IEDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "Version")
$result = StringLeft($IEDir, 1)
If $result = "6" Then
Dim $F = FileOpen(@TempDir & "\SystemClean.vbs", 2)
FileWriteLine($F, 'CreateObject("Shell.Application").NameSpace(32).Items().InvokeVerbEx("delete")') ;清除 IE6-Cookies
FileClose($F)
RunWait(@ComSpec & " /c call " & @TempDir & "\SystemClean.vbs", @ScriptDir, @SW_HIDE)
Else
RunWait(@ComSpec & " /C rundll32.exe " & @SystemDir & "\InetCpl.cpl,ClearMyTracksByProcess 4351", "", @SW_HIDE) ;清除 IE7-Cookies
EndIf
GUICtrlSetData($LabInfo, "Cookies清除成功!")
EndFunc ;==>ReLoad ChildProc.au3这个哪里有? 官网链接如下,好东西啊,支持新版的,并且持续更新...
ChildProc (Parallel Processing) UDF 回复 8# 风行者
嗯,对于这种问题多进程是很好的解决办法,现在思路清晰了许多
请问脚本中包含的 #include <ChildProc.au3> 哪里有得下载 请参见我的回复中,我在官网找到了 不过调试了几个例子,好像老出错,求个能用的版本... 不过调试了几个例子,好像老出错,求个能用的版本... 这个修改过的,可用
页:
[1]
2