找回密码
 加入
搜索
查看: 19209|回复: 23

[IE类操作] 【已解决】如何清除Cookies 与 关闭IE消息弹出窗

 火.. [复制链接]
发表于 2010-9-2 17:15:34 | 显示全部楼层 |阅读模式
本帖最后由 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金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-2 18:50:28 | 显示全部楼层
1.我在XP下实行可以关闭投票成功的对话框

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

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

评分

参与人数 1金钱 +15 贡献 +1 收起 理由
styledream + 15 + 1 感谢您的帮助!

查看全部评分

 楼主| 发表于 2010-9-2 19:13:44 | 显示全部楼层
本帖最后由 styledream 于 2010-9-2 19:24 编辑

回复 2# lixiaolong

感谢 lixiaolong 兄弟的回复,困扰了多天的Cookies清除问题已经解决了,十分感谢
对于那个IE消息的弹出窗,我测试了好久
如果自己打开网页手动投票,弹出的对话框可以被关闭。
程序模拟点击投票后弹出的对话框却无法被关闭,继续等待求解
发表于 2010-9-2 19:41:22 | 显示全部楼层
回复 3# styledream

这个我不知道原因了,我这里模拟点击投票后弹出的对话框也可以关闭。。。
 楼主| 发表于 2010-9-2 19:50:04 | 显示全部楼层
回复 4# lixiaolong

啊,难道这就是传说中的灵异事件
我把代码拿到别人电脑上试试
发表于 2010-9-3 07:20:16 | 显示全部楼层
本帖最后由 morphling12345 于 2010-9-3 07:21 编辑

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


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


;;;;;;
ProcessClose("2.exe")
 楼主| 发表于 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

评分

参与人数 1金钱 +15 贡献 +1 收起 理由
styledream + 15 + 1 感谢帮助~

查看全部评分

发表于 2010-9-4 07:47:04 | 显示全部楼层
ChildProc.au3这个哪里有?
发表于 2010-9-4 07:58:15 | 显示全部楼层
官网链接如下,好东西啊,支持新版的,并且持续更新...

ChildProc (Parallel Processing) UDF

本帖子中包含更多资源

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

×
 楼主| 发表于 2010-9-4 08:16:37 | 显示全部楼层
回复 8# 风行者

嗯,对于这种问题多进程是很好的解决办法,现在思路清晰了许多
请问脚本中包含的 #include <ChildProc.au3> 哪里有得下载
发表于 2010-9-4 13:57:34 | 显示全部楼层
请参见我的回复中,我在官网找到了
发表于 2010-9-4 14:15:19 | 显示全部楼层
不过调试了几个例子,好像老出错,求个能用的版本...
发表于 2010-9-4 14:15:19 | 显示全部楼层
不过调试了几个例子,好像老出错,求个能用的版本...
发表于 2010-9-4 14:43:02 | 显示全部楼层
这个修改过的,可用

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 04:39 , Processed in 0.093108 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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