cashiba 发表于 2016-12-18 10:41:24

关于_IEAttach的各种不懂......

本帖最后由 cashiba 于 2016-12-18 10:44 编辑

最近提问的几个问题,发现最后都归结到_IEAttach和_IEPropertyGet两个函数的联用上......
但是帮助文件看来看去,就是理解不透........
{:face (239):}
-------------------------------------------------我是分界线开始---------------------------------------------------------------------------------------
_IEAttach
附加匹配搜索字符串的子链的实例到指定 IE 浏览器.(根据所选择的模式).

#include <IE.au3>
_IEAttach ( $sString [, $sMode = "title" [, $iInstance = 1]] )

参 数
$sString 搜索的字符串 (对于 "embedded" 或 "dialogbox", 使用子链标题或者窗口句柄)
$sMode [可选] 指定搜索模式:

"title" = (默认)子链的主文档标题;1、子链,是不是指网页里面的某个链接(Anchor),还是其它意思?;2、子链的主文档标题,什么意思?
"windowtitle" = 子链的完整窗口标题(不是文档标题);3、子链的完整窗口标题,什么意思?与子链的主文档标题有啥区别?
"url" = 子链或当前页面的 URL
"text" = 当前页面的主体子链文本;4、主体子链与子链有啥区别?
"html" = 当前页面的子链 html;5、子链 html?
"hwnd" = 浏览器窗口句柄
"embedded" = 标题的子字符串或嵌入控件的窗口句柄;6、标题的子字符串,也就是标题的部分文本?
"dialogbox" = 子链标题或模式/无模式对话框的句柄

$iInstance
"instance" = 忽略 $s_string, 浏览器引用返回(由匹配的实例数)所有可用的浏览器实例 ;7、"instance" =忽略 $s_string....$s_string不是必选参数吗?
$iInstance [可选] 浏览器组的 1 基索引; 或匹配 $sString 与 $sMode 的内嵌浏览器. 见备注.

返 回 值
成功: 返回所有指向 IE 对象的对象变量, 但嵌入式和 DislogBox 模式, 则仅返回一个窗口对象.
失败: @error 设置 为非 0 值.
@error: 5 ($_IEStatus_InvalidValue) - 无效值
7 ($_IEStatus_NoMatch) - 没有匹配
@Extended: 包含无效参数数量
-------------------------------------------------我是分界线结束---------------------------------------------------------------------------------------

ceoguang 发表于 2016-12-18 11:08:34

这些函数都不是内置的,直接可以查看源函数过程

cashiba 发表于 2016-12-18 11:24:27

这些函数都不是内置的,直接可以查看源函数过程
ceoguang 发表于 2016-12-18 11:08 http://www.autoitx.com/images/common/back.gif
关键是子链这个概念.....
源函数如下,限于网页DOM之类的基础,一时半会也不大看得懂哇
{:face (189):}Func _IEAttach($sString, $sMode = "title", $iInstance = 1)
        $sMode = StringLower($sMode)

        $iInstance = Int($iInstance)
        If $iInstance < 1 Then
                __IEConsoleWriteError("错误", "_IEAttach", "$_IESTATUS_InvalidValue", "$iInstance < 1")
                Return SetError($_IESTATUS_InvalidValue, 3, 0)
        EndIf

        If $sMode = "embedded" Or $sMode = "dialogbox" Then
                Local $iWinTitleMatchMode = Opt("WinTitleMatchMode", $OPT_MATCHANY)
                If $sMode = "dialogbox" And $iInstance > 1 Then
                        If IsHWnd($sString) Then
                                $iInstance = 1
                                __IEConsoleWriteError("警告", "_IEAttach", "$_IESTATUS_GeneralError", "$iInstance > 1, HWnd 和 DialogBox 无效.设置为 1.")
                        Else
                                Local $aWinlist = WinList($sString, "")
                                If $iInstance <= $aWinlist Then
                                        $sString = $aWinlist[$iInstance]
                                        $iInstance = 1
                                Else
                                        __IEConsoleWriteError("警告", "_IEAttach", "$_IESTATUS_NoMatch")
                                        Opt("WinTitleMatchMode", $iWinTitleMatchMode)
                                        Return SetError($_IESTATUS_NoMatch, 1, 0)
                                EndIf
                        EndIf
                EndIf
                Local $hControl = ControlGetHandle($sString, "", "")
                Local $oResult = __IEControlGetObjFromHWND($hControl)
                Opt("WinTitleMatchMode", $iWinTitleMatchMode)
                If IsObj($oResult) Then
                        Return SetError($_IESTATUS_Success, 0, $oResult)
                Else
                        __IEConsoleWriteError("警告", "_IEAttach", "$_IESTATUS_NoMatch")
                        Return SetError($_IESTATUS_NoMatch, 1, 0)
                EndIf
        EndIf

        Local $oShell = ObjCreate("Shell.Application")
        Local $oShellWindows = $oShell.Windows(); collection of all ShellWindows (IE and File Explorer)
        Local $iTmp = 1
        Local $iNotifyStatus, $bIsBrowser, $sTmp
        Local $bStatus
        For $oWindow In $oShellWindows
                ;------------------------------------------------------------------------------------------
                ; Check to verify that the window object is a valid browser, if not, skip it
                ;
                ; Setup internal error handler to Trap COM errors, turn off error notification,
                ;   check object property validity, set a flag and reset error handler and notification
                ;
                $bIsBrowser = True
                ; Trap COM errors and turn off error notification
                $bStatus = __IEInternalErrorHandlerRegister()
                If Not $bStatus Then __IEConsoleWriteError("警告", "_IEAttach", _
                                "无法注册内部错误处理程序,无法捕获 COM 错误", _
                                "使用 _IEErrorHandlerRegister() 注册用户错误处理程序")
                ; Turn off error notification for internal processing
                $iNotifyStatus = _IEErrorNotify() ; save current error notify status
                _IEErrorNotify(False)

                ; Check conditions to verify that the object is a browser
                If $bIsBrowser Then
                        $sTmp = $oWindow.type ; Is .type a valid property?
                        If @error Then $bIsBrowser = False
                EndIf
                If $bIsBrowser Then
                        $sTmp = $oWindow.document.title ; Does object have a .document and .title property?
                        If @error Then $bIsBrowser = False
                EndIf

                ; restore error notify
                _IEErrorNotify($iNotifyStatus) ; restore notification status
                __IEInternalErrorHandlerDeRegister()
                ;------------------------------------------------------------------------------------------

                If $bIsBrowser Then
                        Switch $sMode
                                Case "title"
                                        If StringInStr($oWindow.document.title, $sString) > 0 Then
                                                If $iInstance = $iTmp Then
                                                        Return SetError($_IESTATUS_Success, 0, $oWindow)
                                                Else
                                                        $iTmp += 1
                                                EndIf
                                        EndIf
                                Case "instance"
                                        If $iInstance = $iTmp Then
                                                Return SetError($_IESTATUS_Success, 0, $oWindow)
                                        Else
                                                $iTmp += 1
                                        EndIf
                                Case "windowtitle"
                                        Local $bFound = False
                                        $sTmp = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\", "Window Title")
                                        If Not @error Then
                                                If StringInStr($oWindow.document.title & " - " & $sTmp, $sString) Then $bFound = True
                                        Else
                                                If StringInStr($oWindow.document.title & " - Microsoft Internet Explorer", $sString) Then $bFound = True
                                                If StringInStr($oWindow.document.title & " - Windows Internet Explorer", $sString) Then $bFound = True
                                        EndIf
                                        If $bFound Then
                                                If $iInstance = $iTmp Then
                                                        Return SetError($_IESTATUS_Success, 0, $oWindow)
                                                Else
                                                        $iTmp += 1
                                                EndIf
                                        EndIf
                                Case "url"
                                        If StringInStr($oWindow.LocationURL, $sString) > 0 Then
                                                If $iInstance = $iTmp Then
                                                        Return SetError($_IESTATUS_Success, 0, $oWindow)
                                                Else
                                                        $iTmp += 1
                                                EndIf
                                        EndIf
                                Case "text"
                                        If StringInStr($oWindow.document.body.innerText, $sString) > 0 Then
                                                If $iInstance = $iTmp Then
                                                        Return SetError($_IESTATUS_Success, 0, $oWindow)
                                                Else
                                                        $iTmp += 1
                                                EndIf
                                        EndIf
                                Case "html"
                                        If StringInStr($oWindow.document.body.innerHTML, $sString) > 0 Then
                                                If $iInstance = $iTmp Then
                                                        Return SetError($_IESTATUS_Success, 0, $oWindow)
                                                Else
                                                        $iTmp += 1
                                                EndIf
                                        EndIf
                                Case "hwnd"
                                        If $iInstance > 1 Then
                                                $iInstance = 1
                                                __IEConsoleWriteError("警告", "_IEAttach", "$_IESTATUS_GeneralError", "$iInstance > 1,HWnd 无效.设置为 1.")
                                        EndIf
                                        If _IEPropertyGet($oWindow, "hwnd") = $sString Then
                                                Return SetError($_IESTATUS_Success, 0, $oWindow)
                                        EndIf
                                Case Else
                                        ; Invalid Mode
                                        __IEConsoleWriteError("错误", "_IEAttach", "$_IESTATUS_InvalidValue", "指定模式无效")
                                        Return SetError($_IESTATUS_InvalidValue, 2, 0)
                        EndSwitch
                EndIf
        Next
        __IEConsoleWriteError("警告", "_IEAttach", "$_IESTATUS_NoMatch")
        Return SetError($_IESTATUS_NoMatch, 1, 0)
EndFunc   ;==>_IEAttach

Func _IEPropertyGet(ByRef $oObject, $sProperty)
        If Not IsObj($oObject) Then
                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidDataType")
                Return SetError($_IESTATUS_InvalidDataType, 1, 0)
        EndIf
        If Not __IEIsObjType($oObject, "browserdom") Then
                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
        EndIf
        ;
        Local $oTemp, $iTemp
        $sProperty = StringLower($sProperty)
        Select
                Case $sProperty = "browserx"
                        If __IEIsObjType($oObject, "browsercontainer") Or __IEIsObjType($oObject, "document") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        $oTemp = $oObject
                        $iTemp = 0
                        While IsObj($oTemp)
                                $iTemp += $oTemp.offsetLeft
                                $oTemp = $oTemp.offsetParent
                        WEnd
                        Return SetError($_IESTATUS_Success, 0, $iTemp)
                Case $sProperty = "browsery"
                        If __IEIsObjType($oObject, "browsercontainer") Or __IEIsObjType($oObject, "document") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        $oTemp = $oObject
                        $iTemp = 0
                        While IsObj($oTemp)
                                $iTemp += $oTemp.offsetTop
                                $oTemp = $oTemp.offsetParent
                        WEnd
                        Return SetError($_IESTATUS_Success, 0, $iTemp)
                Case $sProperty = "screenx"
                        If __IEIsObjType($oObject, "window") Or __IEIsObjType($oObject, "document") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        If __IEIsObjType($oObject, "browser") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.left())
                        Else
                                $oTemp = $oObject
                                $iTemp = 0
                                While IsObj($oTemp)
                                        $iTemp += $oTemp.offsetLeft
                                        $oTemp = $oTemp.offsetParent
                                WEnd
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, _
                                        $iTemp + $oObject.document.parentWindow.screenLeft)
                Case $sProperty = "screeny"
                        If __IEIsObjType($oObject, "window") Or __IEIsObjType($oObject, "document") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        If __IEIsObjType($oObject, "browser") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.top())
                        Else
                                $oTemp = $oObject
                                $iTemp = 0
                                While IsObj($oTemp)
                                        $iTemp += $oTemp.offsetTop
                                        $oTemp = $oTemp.offsetParent
                                WEnd
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, _
                                        $iTemp + $oObject.document.parentWindow.screenTop)
                Case $sProperty = "height"
                        If __IEIsObjType($oObject, "window") Or __IEIsObjType($oObject, "document") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        If __IEIsObjType($oObject, "browser") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.Height())
                        Else
                                Return SetError($_IESTATUS_Success, 0, $oObject.offsetHeight)
                        EndIf
                Case $sProperty = "width"
                        If __IEIsObjType($oObject, "window") Or __IEIsObjType($oObject, "document") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        If __IEIsObjType($oObject, "browser") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.Width())
                        Else
                                Return SetError($_IESTATUS_Success, 0, $oObject.offsetWidth)
                        EndIf
                Case $sProperty = "isdisabled"
                        Return SetError($_IESTATUS_Success, 0, $oObject.isDisabled())
                Case $sProperty = "addressbar"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.AddressBar())
                Case $sProperty = "busy"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.Busy())
                Case $sProperty = "fullscreen"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.fullScreen())
                Case $sProperty = "hwnd"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, HWnd($oObject.HWnd()))
                Case $sProperty = "left"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.Left())
                Case $sProperty = "locationname"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.LocationName())
                Case $sProperty = "locationurl"
                        If __IEIsObjType($oObject, "browser") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.locationURL())
                        EndIf
                        If __IEIsObjType($oObject, "window") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.location.href())
                        EndIf
                        If __IEIsObjType($oObject, "document") Then
                                Return SetError($_IESTATUS_Success, 0, $oObject.parentwindow.location.href())
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentwindow.location.href())
                Case $sProperty = "menubar"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.MenuBar())
                Case $sProperty = "offline"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.OffLine())
                Case $sProperty = "readystate"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.ReadyState())
                Case $sProperty = "resizable"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.Resizable())
                Case $sProperty = "silent"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.Silent())
                Case $sProperty = "statusbar"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.StatusBar())
                Case $sProperty = "statustext"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.StatusText())
                Case $sProperty = "top"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.Top())
                Case $sProperty = "visible"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.Visible())
                Case $sProperty = "appcodename"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.appCodeName())
                Case $sProperty = "appminorversion"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.appMinorVersion())
                Case $sProperty = "appname"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.appName())
                Case $sProperty = "appversion"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.appVersion())
                Case $sProperty = "browserlanguage"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.browserLanguage())
                Case $sProperty = "cookieenabled"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.cookieEnabled())
                Case $sProperty = "cpuclass"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.cpuClass())
                Case $sProperty = "javaenabled"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.javaEnabled())
                Case $sProperty = "online"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.onLine())
                Case $sProperty = "platform"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.platform())
                Case $sProperty = "systemlanguage"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.systemLanguage())
                Case $sProperty = "useragent"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.userAgent())
                Case $sProperty = "userlanguage"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.parentWindow.top.navigator.userLanguage())
                Case $sProperty = "referrer"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.referrer)
                Case $sProperty = "theatermode"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.TheaterMode)
                Case $sProperty = "toolbar"
                        If Not __IEIsObjType($oObject, "browser") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oObject.ToolBar)
                Case $sProperty = "contenteditable"
                        If __IEIsObjType($oObject, "browser") Or __IEIsObjType($oObject, "document") Then
                                $oTemp = $oObject.document.body
                        Else
                                $oTemp = $oObject
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oTemp.isContentEditable)
                Case $sProperty = "innertext"
                        If __IEIsObjType($oObject, "documentcontainer") Or __IEIsObjType($oObject, "document") Then
                                $oTemp = $oObject.document.body
                        Else
                                $oTemp = $oObject
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oTemp.innerText)
                Case $sProperty = "outertext"
                        If __IEIsObjType($oObject, "documentcontainer") Or __IEIsObjType($oObject, "document") Then
                                $oTemp = $oObject.document.body
                        Else
                                $oTemp = $oObject
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oTemp.outerText)
                Case $sProperty = "innerhtml"
                        If __IEIsObjType($oObject, "documentcontainer") Or __IEIsObjType($oObject, "document") Then
                                $oTemp = $oObject.document.body
                        Else
                                $oTemp = $oObject
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oTemp.innerHTML)
                Case $sProperty = "outerhtml"
                        If __IEIsObjType($oObject, "documentcontainer") Or __IEIsObjType($oObject, "document") Then
                                $oTemp = $oObject.document.body
                        Else
                                $oTemp = $oObject
                        EndIf
                        Return SetError($_IESTATUS_Success, 0, $oTemp.outerHTML)
                Case $sProperty = "title"
                        Return SetError($_IESTATUS_Success, 0, $oObject.document.title)
                Case $sProperty = "uniqueid"
                        If __IEIsObjType($oObject, "window") Then
                                __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidObjectType")
                                Return SetError($_IESTATUS_InvalidObjectType, 1, 0)
                        Else
                                Return SetError($_IESTATUS_Success, 0, $oObject.uniqueID)
                        EndIf
                Case Else
                        ; Unsupported Property
                        __IEConsoleWriteError("错误", "_IEPropertyGet", "$_IESTATUS_InvalidValue", "无效的属性")
                        Return SetError($_IESTATUS_InvalidValue, 2, 0)
        EndSelect
EndFunc   ;==>_IEPropertyGet

ceoguang 发表于 2016-12-18 13:09:39

翻译问题。
何必纠结在两个词上面呢?
在源码面前根本无需多余的语言。

cashiba 发表于 2016-12-18 17:03:15

cashiba 发表于 2016-12-18 17:11:47

函数说明:
名称: IEAttach()
作者: amnesiac
用途:
根据选择的匹配模式, 附加到指定的 InternetExplorer 或 WebBrowser 对象.
参数:
s_string [可选参数] 要搜索的字符串 (对于"embedded"或者"dialogbox", 使用标题子字符串或者窗口句柄)
s_mode [可选参数]: 指定搜索模式
Title = (默认) 主文档标题的子字符串
WindowTitle = 完整窗口标题的子字符串(替代文档标题)
URL = 当前网页的url或者url子字符串
Text = 当前网页body标记内的文本或者文本子字符串
HTML = 当前网页body标签内的HTML代码或者HTML代码子字符串
HWND = 浏览器窗口句柄
Embedded = 嵌入了控件的窗口的句柄或者标题子字符串
DialogBox = 模态/非模态的对话框的句柄或者标题子字符串
Instance = 忽略 s_string, 从所有可用的浏览器实例中返回一个浏览器引用(通过匹配实例号)
i_instance [可选参数]: 按照 $s_string 和 $s_mode 匹配的浏览器组/嵌入式浏览器组返回一个基于1开始的索引数组. 参考备注.
返回值
成功: 返回一个指向 InternetExplorer 对象的变量,嵌入式浏览器与对话框模块将返回一个窗口对象
失败: 没有返回值
注意事项
1. 这个函数提供了通过 "dialogbox" 附加到由浏览器创建的模式/非模式对话框的功能, 需要注意并非由浏览器创建的所有对话框都可以进行控制, 许多这种对话框是标准的 Windows 窗口, 应该使用普通的窗口控制函数进行操作. 要区分这两种窗口可以用 Active Window Info 工具, 如果窗口中含有类名为 Internet Explorer_Server 的控件, 那么可以用这种方法进行附加, 否则需要用普通的窗口控制函数.
2. 此函数可能返回 WebBrowser 或 InternetExplorer 对象, 需要注意它们的区别. 如果通过 WebBrowser 对象访问状态栏/地址栏文本, 则可能出现错误.
IEAttach() 函数和两个内部使用的函数:
AHK里的IEAttach.....

saromman 发表于 2016-12-27 08:55:41

你到底要问什么问题,这2个函数在捕获IE匹配的时候,基本还是准确的,但是不一定完全,因为IE版本的问题,还有当前是否存在多个实例,请详细描述问题,不明白的可以Q我45185852

saromman 发表于 2016-12-27 08:56:54

可以简单的说_IEAttach就是模糊匹配一个窗口,_IEPropertyGet就是GET一个DCOM控件的属性。

cashiba 发表于 2016-12-27 23:39:30

可以简单的说_IEAttach就是模糊匹配一个窗口,_IEPropertyGet就是GET一个DCOM控件的属性。
saromman 发表于 2016-12-27 08:56 http://www.autoitx.com/images/common/back.gif
感谢指点.....

cashiba 发表于 2016-12-27 23:49:54

你到底要问什么问题 ...
saromman 发表于 2016-12-27 08:55 http://www.autoitx.com/images/common/back.gif
就是红色字体标记的这些术语的概念的问题,有点不好理解....
示例不多,可能还得多用才明白吧
{:face (396):}

xuzhouchuanxp 发表于 2022-4-18 17:58:52

都2022年了。。。。我还是没看懂
页: [1]
查看完整版本: 关于_IEAttach的各种不懂......