找回密码
 加入
搜索
查看: 6801|回复: 13

[IE类操作] [已解决]请问在内嵌的IE页面如何判断鼠标点击了某个连接

 火.. [复制链接]
发表于 2012-1-5 01:58:54 | 显示全部楼层 |阅读模式
本帖最后由 Netfox 于 2012-1-11 17:37 编辑

我点击内嵌网页中的某个连接,想判断鼠标点击了此连接,自动关闭AU3主程序。请问大大,如何能判断鼠标点击了连接,谢谢。
发表于 2012-1-5 08:18:55 | 显示全部楼层
如果是模拟鼠标操作, 不可靠.
但可以依据鼠标点击位置的颜色等判断,
当然最准确的判断是以打开的链接的内容为依据.
发表于 2012-1-5 12:57:47 | 显示全部楼层
回复 1# Netfox


    可以判断是否已经打开了连接的网站!如果已经打开,就关闭!
发表于 2012-1-5 17:36:46 | 显示全部楼层
#include <IE.au3>
$oIE = _IECreateEmbedded()
$gui = GUICreate("测试", 700, 600)
GUICtrlCreateObj($oIE, 0, 0, 700, 600)
_IENavigate($oIE, "http://www.baidu.com/")
$oid = _IETagNameGetCollection($oIE,"a",21) ;关于百度
ObjEvent($oid, "_Evt_")
GUISetState()

While GUIGetMsg() <> -3
        Sleep(100)
WEnd

Func _Evt_onClick()
        Exit ;点击就退出
EndFunc   ;==>_Evt_Click
 楼主| 发表于 2012-1-6 02:39:45 | 显示全部楼层
回复 4# 风行者


    感谢风行者的回复,该代码运行后不出现窗口,请问你有这种现象吗?还有如果使用$oIE.navigate则_IETagNameGetCollection不能使用索引。
发表于 2012-1-6 03:56:53 | 显示全部楼层
回复 5# Netfox

因为$oIE.navigate不会等待网页加载完成,可以_ieloadwait 或   使用接口DWebBrowserEvents2判断网页DocumentComplete事件,再用风行者的方法就靠谱了
发表于 2012-1-7 00:29:28 | 显示全部楼层
突然有事写了一点自己改一下吧!
#include <IE.au3>
$oIE = _IECreateEmbedded()
$gui = GUICreate("测试", 700, 600)
GUICtrlCreateObj($oIE, 0, 0, 700, 600)
_IENavigate($oIE, "http://www.baidu.com/")
$oid = _IETagNameGetCollection($oIE,"a",21) ;关于百度
ObjEvent($oid, "_Evt_")
GUISetState()

While GUIGetMsg() <> -3
        Sleep(100)
                $oi= _IEAttach($gui, "Embedded")
                $url = _IEPropertyGet($oi, "locationurl")
                ToolTip($url,0,0)
WEnd

Func _Evt_onClick()
        Exit ;点击就退出
EndFunc   ;==>_Evt_Click
 楼主| 发表于 2012-1-7 03:33:39 | 显示全部楼层
都不能用哦。
发表于 2012-1-7 22:52:32 | 显示全部楼层
本帖最后由 wua0550 于 2012-1-7 22:53 编辑

改下下 风行者 代码还顺代着给自己弄点收益
本人巨穷,如果有用请给我加点钱
http://www.autoitx.com/forum.php ... &from=favorites
#include <IE.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
Dim $url = "",$url1 = ""
_IEErrorHandlerRegister()
$oIE = _IECreateEmbedded()
$url = "http://www.tao123.com/?3528_6595"
$gui=GUICreate("test", 700, 600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_MAXIMIZE, $WS_SIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_DeleteWin")
$AX = GUICtrlCreateObj($oIE, 0, 0, @DesktopWidth, @DesktopHeight - 35)
_IENavigate($oIE, $url)
_self()
GUISetState()

While 1
        If $oIE.readyState <> 4 Then _self()
        $oi = _IEAttach($gui, "Embedded")
        $url = _IEPropertyGet($oi, "locationurl")
        If $url1="" Then $url1=$url
        If $url1<>$url Then 
                MsgBox(0,"有变动","原网址:"&$url1&@CR&"改变为:"&$url )
                Exit 
    EndIf 
        ToolTip($url&@CR&$url1, 0, 0)
WEnd

Func _self()
        GUICtrlSetState($AX, $GUI_HIDE)
        _IELoadWait($oIE)
        $As = _IETagNameGetCollection($oIE, "a")
        For $A In $As
                $A.target = "_self"
        Next
        
        $Forms = _IEFormGetCollection($oIE)
        For $Form In $Forms
                $Form.target = "_self"
        Next
        
        $Frames = _IEFrameGetCollection($oIE)
        If $Frames <> 0 Then
                For $Frame In $Frames
                        $As = _IETagNameGetCollection($Frame, "a")
                        For $A In $As
                                $A.target = "_self"
                        Next
                Next
        EndIf
        GUICtrlSetState($AX, $GUI_SHOW)
EndFunc   ;==>_self

Func _DeleteWin()
        Exit
EndFunc   ;==>_DeleteWin
 楼主| 发表于 2012-1-8 11:51:13 | 显示全部楼层
回复 9# wua0550

    兄台,在你的机器上能正常跑起来吗,我运行你的代码总是不会出现界面,因为_IENavigate($oIE, $url)使用的是默认参数,1,就是等待加载完毕才返回,但是这又是内嵌的页面,只在窗口还在,他都认为是还需要要等待,所以不为执行后来的代码,窗口出现不了。。。但如果用_IENavigate($oIE, $url,0),_IETagNameGetCollection($oIE, "a")这里要出错。
发表于 2012-1-8 16:24:43 | 显示全部楼层
那可能是你的网太慢了加载网站时间久~~你可以试着多等会或是先加载gui后再打开网站~~代码如下
#include <IE.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
Dim $url = "",$url1 = ""
_IEErrorHandlerRegister()
$oIE = _IECreateEmbedded()
$url = "http://www.tao123.com/?3528_6595"
$gui=GUICreate("test", 700, 600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_MAXIMIZE, $WS_SIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_DeleteWin")
$AX = GUICtrlCreateObj($oIE, 0, 0, @DesktopWidth, @DesktopHeight - 35)
GUISetState()
_IENavigate($oIE, $url)
_self()
While 1
        If $oIE.readyState <> 4 Then _self()
        $oi = _IEAttach($gui, "Embedded")
        $url = _IEPropertyGet($oi, "locationurl")
        If $url1="" Then $url1=$url
        If $url1<>$url Then 
                MsgBox(0,"有变动","原网址:"&$url1&@CR&"改变为:"&$url )
                Exit 
    EndIf 
        ToolTip($url&@CR&$url1, 0, 0)
WEnd

Func _self()
        GUICtrlSetState($AX, $GUI_HIDE)
        _IELoadWait($oIE)
        $As = _IETagNameGetCollection($oIE, "a")
        For $A In $As
                $A.target = "_self"
        Next
        
        $Forms = _IEFormGetCollection($oIE)
        For $Form In $Forms
                $Form.target = "_self"
        Next
        
        $Frames = _IEFrameGetCollection($oIE)
        If $Frames <> 0 Then
                For $Frame In $Frames
                        $As = _IETagNameGetCollection($Frame, "a")
                        For $A In $As
                                $A.target = "_self"
                        Next
                Next
        EndIf
        GUICtrlSetState($AX, $GUI_SHOW)
EndFunc   ;==>_self

Func _DeleteWin()
        Exit
EndFunc   ;==>_DeleteWin
发表于 2012-1-9 22:06:01 | 显示全部楼层
过来学习一下,真不错呀。。。。。。
发表于 2012-1-10 21:24:53 | 显示全部楼层
前来学习,看到好多有用的
发表于 2013-8-21 15:27:50 | 显示全部楼层
不错。学习了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 13:57 , Processed in 0.147813 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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