styledream 发表于 2010-9-2 17:15:34

【已解决】如何清除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

lixiaolong 发表于 2010-9-2 18:50:28

1.我在XP下实行可以关闭投票成功的对话框

2.FileDelete(@UserProfileDir & "\Cookies\*.*")
这个代码无法完全删除Cookies

请参考我的帖子,可以完全删除IE临时文件
http://www.autoitx.com/thread-17576-1-1.html

styledream 发表于 2010-9-2 19:13:44

本帖最后由 styledream 于 2010-9-2 19:24 编辑

回复 2# lixiaolong

感谢 lixiaolong 兄弟的回复,困扰了多天的Cookies清除问题已经解决了,十分感谢
对于那个IE消息的弹出窗,我测试了好久
如果自己打开网页手动投票,弹出的对话框可以被关闭。
程序模拟点击投票后弹出的对话框却无法被关闭,继续等待求解

lixiaolong 发表于 2010-9-2 19:41:22

回复 3# styledream

这个我不知道原因了,我这里模拟点击投票后弹出的对话框也可以关闭。。。

styledream 发表于 2010-9-2 19:50:04

回复 4# lixiaolong

啊,难道这就是传说中的灵异事件
我把代码拿到别人电脑上试试

morphling12345 发表于 2010-9-3 07:20:16

本帖最后由 morphling12345 于 2010-9-3 07:21 编辑

我是用了辅助程序来完成的,也就是将判断窗口并关闭的子程序独立出来解决这个问题,主程序一旦遇到弹出窗口确认的就失去响应了,所以我将会弹出窗口确认的都不做响应,
例如,_IEImgClick ($oIE1, "保存为已完成", "alt",0,0)
我按网页的这个图片,就会跳出是否要关闭窗口,就失去响应了,我不让主程序等待响应,直接执行下面的代码。
子程序中和你的那个函数一样功能的


Run("2.exe",@WorkingDir)
;;;;;;主程序


;;;;;;
ProcessClose("2.exe")

styledream 发表于 2010-9-3 10:19:47

回复 6# morphling12345

我也觉得很奇怪,IE的弹出窗主程序控制不了,只有用子程序才能关闭

风行者 发表于 2010-9-3 15:43:31

用多进程方法可以#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

morphling12345 发表于 2010-9-4 07:47:04

ChildProc.au3这个哪里有?

morphling12345 发表于 2010-9-4 07:58:15

官网链接如下,好东西啊,支持新版的,并且持续更新...

ChildProc (Parallel Processing) UDF

styledream 发表于 2010-9-4 08:16:37

回复 8# 风行者

嗯,对于这种问题多进程是很好的解决办法,现在思路清晰了许多
请问脚本中包含的 #include <ChildProc.au3> 哪里有得下载

morphling12345 发表于 2010-9-4 13:57:34

请参见我的回复中,我在官网找到了

morphling12345 发表于 2010-9-4 14:15:19

不过调试了几个例子,好像老出错,求个能用的版本...

morphling12345 发表于 2010-9-4 14:15:19

不过调试了几个例子,好像老出错,求个能用的版本...

风行者 发表于 2010-9-4 14:43:02

这个修改过的,可用
页: [1] 2
查看完整版本: 【已解决】如何清除Cookies 与 关闭IE消息弹出窗