本帖最后由 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
|