mendrofa Posted April 4, 2016 Share Posted April 4, 2016 (edited) #include <IE.au3> const $navOpenInBackgroundTab = 4096 Global $url = "https://www.binary.com/d/trade.cgi?market=random&time=5t&form_name=risefall&expiry_type=duration&amount_type=payout&H=S0P¤cy=USD&underlying_symbol=R_75&amount=100&date_start=now&type=CALL&L=S0P&l=ID" $oIE = _IECreate($url) $oIE.Navigate2($url) $oIE.Navigate2($url, $navOpenInBackgroundTab) $oIE.Navigate2($url, $navOpenInBackgroundTab) Edited April 4, 2016 by mendrofa Link to comment Share on other sites More sharing options...
jguinch Posted April 4, 2016 Share Posted April 4, 2016 I don't know if such a function already exists somewhere, but here is mine : #include <IE.au3> const $navOpenInBackgroundTab = 4096 Global $url = "https://www.binary.com/d/trade.cgi?market=random&time=5t&form_name=risefall&expiry_type=duration&amount_type=payout&H=S0P¤cy=USD&underlying_symbol=R_75&amount=100&date_start=now&type=CALL&L=S0P&l=ID" $oIE = _IECreate($url) $oIE.Navigate2($url) $oIETab1 = _IECreateTab($oIE, $url) $oIETab2 = _IECreateTab($oIE, $url) $oIETab2.Navigate2("google.com") Func _IECreateTab($oIE, $sURL, $iWait = 1) If Not IsObj($oIE) Then Return SetError(1, 0, 0) $oIE.Navigate2("about:blank", $navOpenInBackgroundTab) Do $oIETab = _IEAttach("about:blank", "url", 1) If Not @error Then ExitLoop Until IsObj($oIETab) _IENavigate($oIETab, $sURL) If $iWait Then _IELoadWait($oIETab) Return $oIETab EndFunc Spoiler Network configuration UDF, _DirGetSizeByExtension, _UninstallList Firefox ConfigurationArray multi-dimensions, Printer Management UDF Link to comment Share on other sites More sharing options...
mendrofa Posted April 5, 2016 Author Share Posted April 5, 2016 @Danyfirex Link to comment Share on other sites More sharing options...
LarsJ Posted April 6, 2016 Share Posted April 6, 2016 I do not know if there are any easier solutions, but it can be done this way: expandcollapse popup#include <IE.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPIConstants.au3> #include <WinAPI.au3> #include "MSAccessibility.au3" Global $aAccObjects[100][3], $iAccObjects = 0 const $navOpenInBackgroundTab = 4096 Global $url = "https://www.binary.com/d/trade.cgi?market=random&time=5t&form_name=risefall&expiry_type=duration&amount_type=payout&H=S0P¤cy=USD&underlying_symbol=R_75&amount=100&date_start=now&type=CALL&L=S0P&l=ID" $oIE = _IECreate($url) $oIE.Navigate2($url) $oIE.Navigate2($url, $navOpenInBackgroundTab) $oIE.Navigate2($url, $navOpenInBackgroundTab) Sleep(5000) Local $hChild = 0, $hWindow = WinGetHandle( "[CLASS:IEFrame]", "" ) ; Internet Explorer FindChildWindowByClass( $hWindow, $hChild, "DirectUIHWND" ) ; This function does not depend on a specific IE version ;ConsoleWrite( "$hChild = " & $hChild & @CRLF & @CRLF ) ; Accessible object Local $pChild, $oChild AccessibleObjectFromWindow( $hChild, $OBJID_CLIENT, $tIID_IAccessible, $pChild ) WalkTreeWithAccessibleChildren( $pChild, 0, 2 ) ; The tabs belongs to level 1 (zero based) ;ConsoleWrite( @CRLF ) ; Identifying the tabs by the level makes it independent of the localized string "Tab Row" For $i = 0 To $iAccObjects - 1 If $aAccObjects[$i][2] = 1 Then ExitLoop ; The tabs belongs to level 1 Next Local $iAccFirst = $i, $iAccCount = $iAccObjects - $i - 1 ; Index of first tab, number of tabs Local $hGui = GUICreate( "IE Tabs", 400, 160, -1, 300, -1, $WS_EX_TOPMOST ) Local $idBut1 = GUICtrlCreateButton( $aAccObjects[$iAccFirst][1] & " " & 0, 10, 10, 380, 40 ) For $i = 1 To $iAccCount - 1 GUICtrlCreateButton( $aAccObjects[$iAccFirst+$i][1] & " " & $i, 10, 10+$i*50, 380, 40 ) Next GUISetState() Local $iMsg While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $idBut1 To $idBut1 + $iAccCount - 1 $aAccObjects[$iAccFirst+$iMsg-$idBut1][0].accDoDefaultAction(0) Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd ; Cleanup For $i = 0 To $iAccObjects - 1 $aAccObjects[$i][0] = 0 Next GUIDelete( $hGui ) Exit Func FindChildWindowByClass( $hParent, ByRef $hFound, $sClass ) If Not $hParent Then Return Local $hChild = _WinAPI_GetWindow( $hParent, $GW_CHILD ) While $hChild If _WinAPI_GetClassName( $hChild ) = $sClass Then $hFound = $hChild Return EndIf FindChildWindowByClass( $hChild, $hFound, $sClass ) $hChild = _WinAPI_GetWindow( $hChild, $GW_HWNDNEXT ) WEnd EndFunc Func WalkTreeWithAccessibleChildren( $pAcc, $iLevel, $iLevels = 0 ) If $iLevels And $iLevel = $iLevels Then Return ; Create object Local $oAcc = ObjCreateInterface( $pAcc, $sIID_IAccessible, $dtagIAccessible ) If Not IsObj( $oAcc ) Then Return $oAcc.AddRef() Local $iChildCount, $iReturnCount, $tVarChildren ; Get children If $oAcc.get_accChildCount( $iChildCount ) Or Not $iChildCount Then Return If AccessibleChildren( $pAcc, 0, $iChildCount, $tVarChildren, $iReturnCount ) Then Return ; Indentation Local $sIndent = "" For $i = 0 To $iLevel - 1 $sIndent &= " " Next Local $vt, $oChildObj, $iChildElem, $sName ; For each child For $i = 1 To $iReturnCount ; $tVarChildren is an array of VARIANTs with information about the children $vt = BitAND( DllStructGetData( $tVarChildren, $i, 1 ), 0xFFFF ) If $vt = $VT_DISPATCH Then ; Child object $pChildObj = DllStructGetData( $tVarChildren, $i, 3 ) $aAccObjects[$iAccObjects][0] = ObjCreateInterface( $pChildObj, $sIID_IAccessible, $dtagIAccessible ) If IsObj( $aAccObjects[$iAccObjects][0] ) Then ;PrintObjectInfo( $aAccObjects[$iAccObjects], $CHILDID_SELF, $sIndent ) $aAccObjects[$iAccObjects][0].get_accName( $CHILDID_SELF, $sName ) $aAccObjects[$iAccObjects][1] = $sName $aAccObjects[$iAccObjects][2] = $iLevel $iAccObjects += 1 WalkTreeWithAccessibleChildren( $pChildObj, $iLevel + 1, $iLevels ) EndIf Else ; $vt = $VT_I4 ; Child element $iChildElem = DllStructGetData( $tVarChildren, $i, 3 ) ;PrintObjectInfo( $oAcc, $iChildElem, $sIndent ) EndIf Next EndFunc Func PrintObjectInfo( $oAcc, $iChild, $sIndent ) Local $sName, $iRole, $sRole, $iRoleLen Local $iState, $sState, $iStateLen, $x, $y, $w, $h If $iChild <> $CHILDID_SELF Then _ ConsoleWrite( $sIndent & "$iChildElem = " & $iChild & @CRLF ) $oAcc.get_accName( $iChild, $sName ) ConsoleWrite( $sIndent & "Name = " & $sName & @CRLF ) EndFunc Save as MSAccessibility.au3: expandcollapse popup#include-once ;#include "CUIAutomation2.au3" ;Global Const $S_OK = 0x00000000 Global Const $S_FALSE = 0x00000001 ;Global Const $E_NOTIMPL = 0x80004001 ;Global Const $E_NOINTERFACE = 0x80004002 ;Global Const $E_FAIL = 0x80004005 Global Const $DISP_E_MEMBERNOTFOUND = 0x80020003 ;Global Const $E_OUTOFMEMORY = 0x8007000E ;Global Const $E_INVALIDARG = 0x80070057 Global Const $VT_EMPTY = 0 Global Const $VT_I4 = 3 Global Const $VT_DISPATCH = 9 ;Global Const $tagVARIANT = "word vt;word r1;word r2;word r3;ptr data; ptr;" If @AutoItX64 Then Global $tagVARIANT = "dword[6];" ; Use this form to be able to build an Else ; array in function AccessibleChildren. Global $tagVARIANT = "dword[4];" EndIf ;Global Const $tIID_IAccessible = CLSIDFromString( $sIID_IAccessible ) ;Global Const $sIID_IServiceProvider = "{6D5140C1-7436-11CE-8034-00AA006009FA}" ;Global Const $tIID_IServiceProvider = CLSIDFromString( $sIID_IServiceProvider ) ;Global Const $dtagIServiceProvider = "QueryService hresult(struct*;struct*;ptr*);" ; ========= MS Active Accessibility constants ========= ; Child ID for the object itself ; (in contrast to simple child elements of the object) Global Const $CHILDID_SELF = 0 ; Navigation constants Global Const $NAVDIR_MIN = 0 Global Const $NAVDIR_UP = 0x1 Global Const $NAVDIR_DOWN = 0x2 Global Const $NAVDIR_LEFT = 0x3 Global Const $NAVDIR_RIGHT = 0x4 Global Const $NAVDIR_NEXT = 0x5 Global Const $NAVDIR_PREVIOUS = 0x6 Global Const $NAVDIR_FIRSTCHILD = 0x7 Global Const $NAVDIR_LASTCHILD = 0x8 Global Const $NAVDIR_MAX = 0x9 ; Selection flags Global Const $SELFLAG_NONE = 0 Global Const $SELFLAG_TAKEFOCUS = 0x1 Global Const $SELFLAG_TAKESELECTION = 0x2 Global Const $SELFLAG_EXTENDSELECTION = 0x4 Global Const $SELFLAG_ADDSELECTION = 0x8 Global Const $SELFLAG_REMOVESELECTION = 0x10 Global Const $SELFLAG_VALID = 0x1f ; Object identifiers ;Global Const $OBJID_WINDOW = 0x00000000 Global Const $OBJID_SYSMENU = 0xFFFFFFFF ;Global Const $OBJID_TITLEBAR = 0xFFFFFFFE Global Const $OBJID_MENU = 0xFFFFFFFD Global Const $OBJID_CLIENT = 0xFFFFFFFC Global Const $OBJID_VSCROLL = 0xFFFFFFFB Global Const $OBJID_HSCROLL = 0xFFFFFFFA ;Global Const $OBJID_SIZEGRIP = 0xFFFFFFF9 ;Global Const $OBJID_CARET = 0xFFFFFFF8 ;Global Const $OBJID_CURSOR = 0xFFFFFFF7 ;Global Const $OBJID_ALERT = 0xFFFFFFF6 ;Global Const $OBJID_SOUND = 0xFFFFFFF5 Global Const $OBJID_QUERYCLASSNAMEIDX = 0xFFFFFFF4 Global Const $OBJID_NATIVEOM = 0xFFFFFFF0 ; Object roles Global Const $ROLE_SYSTEM_TITLEBAR = 0x1 Global Const $ROLE_SYSTEM_MENUBAR = 0x2 Global Const $ROLE_SYSTEM_SCROLLBAR = 0x3 Global Const $ROLE_SYSTEM_GRIP = 0x4 Global Const $ROLE_SYSTEM_SOUND = 0x5 Global Const $ROLE_SYSTEM_CURSOR = 0x6 Global Const $ROLE_SYSTEM_CARET = 0x7 Global Const $ROLE_SYSTEM_ALERT = 0x8 Global Const $ROLE_SYSTEM_WINDOW = 0x9 Global Const $ROLE_SYSTEM_CLIENT = 0xa Global Const $ROLE_SYSTEM_MENUPOPUP = 0xb Global Const $ROLE_SYSTEM_MENUITEM = 0xc Global Const $ROLE_SYSTEM_TOOLTIP = 0xd Global Const $ROLE_SYSTEM_APPLICATION = 0xe Global Const $ROLE_SYSTEM_DOCUMENT = 0xf Global Const $ROLE_SYSTEM_PANE = 0x10 Global Const $ROLE_SYSTEM_CHART = 0x11 Global Const $ROLE_SYSTEM_DIALOG = 0x12 Global Const $ROLE_SYSTEM_BORDER = 0x13 Global Const $ROLE_SYSTEM_GROUPING = 0x14 Global Const $ROLE_SYSTEM_SEPARATOR = 0x15 Global Const $ROLE_SYSTEM_TOOLBAR = 0x16 Global Const $ROLE_SYSTEM_STATUSBAR = 0x17 Global Const $ROLE_SYSTEM_TABLE = 0x18 Global Const $ROLE_SYSTEM_COLUMNHEADER = 0x19 Global Const $ROLE_SYSTEM_ROWHEADER = 0x1a Global Const $ROLE_SYSTEM_COLUMN = 0x1b Global Const $ROLE_SYSTEM_ROW = 0x1c Global Const $ROLE_SYSTEM_CELL = 0x1d Global Const $ROLE_SYSTEM_LINK = 0x1e Global Const $ROLE_SYSTEM_HELPBALLOON = 0x1f Global Const $ROLE_SYSTEM_CHARACTER = 0x20 Global Const $ROLE_SYSTEM_LIST = 0x21 Global Const $ROLE_SYSTEM_LISTITEM = 0x22 Global Const $ROLE_SYSTEM_OUTLINE = 0x23 Global Const $ROLE_SYSTEM_OUTLINEITEM = 0x24 Global Const $ROLE_SYSTEM_PAGETAB = 0x25 Global Const $ROLE_SYSTEM_PROPERTYPAGE = 0x26 Global Const $ROLE_SYSTEM_INDICATOR = 0x27 Global Const $ROLE_SYSTEM_GRAPHIC = 0x28 Global Const $ROLE_SYSTEM_STATICTEXT = 0x29 Global Const $ROLE_SYSTEM_TEXT = 0x2a Global Const $ROLE_SYSTEM_PUSHBUTTON = 0x2b Global Const $ROLE_SYSTEM_CHECKBUTTON = 0x2c Global Const $ROLE_SYSTEM_RADIOBUTTON = 0x2d Global Const $ROLE_SYSTEM_COMBOBOX = 0x2e Global Const $ROLE_SYSTEM_DROPLIST = 0x2f Global Const $ROLE_SYSTEM_PROGRESSBAR = 0x30 Global Const $ROLE_SYSTEM_DIAL = 0x31 Global Const $ROLE_SYSTEM_HOTKEYFIELD = 0x32 Global Const $ROLE_SYSTEM_SLIDER = 0x33 Global Const $ROLE_SYSTEM_SPINBUTTON = 0x34 Global Const $ROLE_SYSTEM_DIAGRAM = 0x35 Global Const $ROLE_SYSTEM_ANIMATION = 0x36 Global Const $ROLE_SYSTEM_EQUATION = 0x37 Global Const $ROLE_SYSTEM_BUTTONDROPDOWN = 0x38 Global Const $ROLE_SYSTEM_BUTTONMENU = 0x39 Global Const $ROLE_SYSTEM_BUTTONDROPDOWNGRID = 0x3a Global Const $ROLE_SYSTEM_WHITESPACE = 0x3b Global Const $ROLE_SYSTEM_PAGETABLIST = 0x3c Global Const $ROLE_SYSTEM_CLOCK = 0x3d Global Const $ROLE_SYSTEM_SPLITBUTTON = 0x3e Global Const $ROLE_SYSTEM_IPADDRESS = 0x3f Global Const $ROLE_SYSTEM_OUTLINEBUTTON = 0x40 ; Object state constants Global Const $STATE_SYSTEM_NORMAL = 0 Global Const $STATE_SYSTEM_UNAVAILABLE = 0x1 Global Const $STATE_SYSTEM_SELECTED = 0x2 Global Const $STATE_SYSTEM_FOCUSED = 0x4 ;Global Const $STATE_SYSTEM_PRESSED = 0x8 Global Const $STATE_SYSTEM_CHECKED = 0x10 Global Const $STATE_SYSTEM_MIXED = 0x20 Global Const $STATE_SYSTEM_INDETERMINATE = $STATE_SYSTEM_MIXED Global Const $STATE_SYSTEM_READONLY = 0x40 Global Const $STATE_SYSTEM_HOTTRACKED = 0x80 Global Const $STATE_SYSTEM_DEFAULT = 0x100 Global Const $STATE_SYSTEM_EXPANDED = 0x200 Global Const $STATE_SYSTEM_COLLAPSED = 0x400 Global Const $STATE_SYSTEM_BUSY = 0x800 Global Const $STATE_SYSTEM_FLOATING = 0x1000 Global Const $STATE_SYSTEM_MARQUEED = 0x2000 Global Const $STATE_SYSTEM_ANIMATED = 0x4000 ;Global Const $STATE_SYSTEM_INVISIBLE = 0x8000 Global Const $STATE_SYSTEM_OFFSCREEN = 0x10000 Global Const $STATE_SYSTEM_SIZEABLE = 0x20000 Global Const $STATE_SYSTEM_MOVEABLE = 0x40000 Global Const $STATE_SYSTEM_SELFVOICING = 0x80000 Global Const $STATE_SYSTEM_FOCUSABLE = 0x100000 Global Const $STATE_SYSTEM_SELECTABLE = 0x200000 Global Const $STATE_SYSTEM_LINKED = 0x400000 Global Const $STATE_SYSTEM_TRAVERSED = 0x800000 Global Const $STATE_SYSTEM_MULTISELECTABLE = 0x1000000 Global Const $STATE_SYSTEM_EXTSELECTABLE = 0x2000000 Global Const $STATE_SYSTEM_ALERT_LOW = 0x4000000 Global Const $STATE_SYSTEM_ALERT_MEDIUM = 0x8000000 Global Const $STATE_SYSTEM_ALERT_HIGH = 0x10000000 Global Const $STATE_SYSTEM_PROTECTED = 0x20000000 Global Const $STATE_SYSTEM_HASPOPUP = 0x40000000 Global Const $STATE_SYSTEM_VALID = 0x7fffffff ; Event constants ;#include "APIConstants.au3" ; AutoIt 3.3.8.0+ #include <APISysConstants.au3> ; AutoIt 3.3.10.0+ #cs Global Const $EVENT_MIN = 0x00000001 Global Const $EVENT_SYSTEM_SOUND = 0x00000001 Global Const $EVENT_SYSTEM_ALERT = 0x00000002 Global Const $EVENT_SYSTEM_FOREGROUND = 0x00000003 Global Const $EVENT_SYSTEM_MENUSTART = 0x00000004 Global Const $EVENT_SYSTEM_MENUEND = 0x00000005 Global Const $EVENT_SYSTEM_MENUPOPUPSTART = 0x00000006 Global Const $EVENT_SYSTEM_MENUPOPUPEND = 0x00000007 Global Const $EVENT_SYSTEM_CAPTURESTART = 0x00000008 Global Const $EVENT_SYSTEM_CAPTUREEND = 0x00000009 Global Const $EVENT_SYSTEM_MOVESIZESTART = 0x0000000A Global Const $EVENT_SYSTEM_MOVESIZEEND = 0x0000000B Global Const $EVENT_SYSTEM_CONTEXTHELPSTART = 0x0000000C Global Const $EVENT_SYSTEM_CONTEXTHELPEND = 0x0000000D Global Const $EVENT_SYSTEM_DRAGDROPSTART = 0x0000000E Global Const $EVENT_SYSTEM_DRAGDROPEND = 0x0000000F Global Const $EVENT_SYSTEM_DIALOGSTART = 0x00000010 Global Const $EVENT_SYSTEM_DIALOGEND = 0x00000011 Global Const $EVENT_SYSTEM_SCROLLINGSTART = 0x00000012 Global Const $EVENT_SYSTEM_SCROLLINGEND = 0x00000013 Global Const $EVENT_SYSTEM_SWITCHSTART = 0x00000014 Global Const $EVENT_SYSTEM_SWITCHEND = 0x00000015 Global Const $EVENT_SYSTEM_MINIMIZESTART = 0x00000016 Global Const $EVENT_SYSTEM_MINIMIZEEND = 0x00000017 Global Const $EVENT_SYSTEM_DESKTOPSWITCH = 0x00000020 Global Const $EVENT_OBJECT_CREATE = 0x00008000 Global Const $EVENT_OBJECT_DESTROY = 0x00008001 Global Const $EVENT_OBJECT_SHOW = 0x00008002 Global Const $EVENT_OBJECT_HIDE = 0x00008003 Global Const $EVENT_OBJECT_REORDER = 0x00008004 Global Const $EVENT_OBJECT_FOCUS = 0x00008005 Global Const $EVENT_OBJECT_SELECTION = 0x00008006 Global Const $EVENT_OBJECT_SELECTIONADD = 0x00008007 Global Const $EVENT_OBJECT_SELECTIONREMOVE = 0x00008008 Global Const $EVENT_OBJECT_SELECTIONWITHIN = 0x00008009 Global Const $EVENT_OBJECT_STATECHANGE = 0x0000800A Global Const $EVENT_OBJECT_LOCATIONCHANGE = 0x0000800B Global Const $EVENT_OBJECT_NAMECHANGE = 0x0000800C Global Const $EVENT_OBJECT_DESCRIPTIONCHANGE = 0x0000800D Global Const $EVENT_OBJECT_VALUECHANGE = 0x0000800E Global Const $EVENT_OBJECT_PARENTCHANGE = 0x0000800F Global Const $EVENT_OBJECT_HELPCHANGE = 0x00008010 Global Const $EVENT_OBJECT_DEFACTIONCHANGE = 0x00008011 Global Const $EVENT_OBJECT_ACCELERATORCHANGE = 0x00008012 Global Const $EVENT_OBJECT_INVOKED = 0x00008013 Global Const $EVENT_OBJECT_TEXTSELECTIONCHANGED = 0x00008014 Global Const $EVENT_OBJECT_CONTENTSCROLLED = 0x00008015 Global Const $EVENT_MAX = 0x7FFFFFFF Global Const $WINEVENT_INCONTEXT = 0x04 Global Const $WINEVENT_OUTOFCONTEXT = 0x00 Global Const $WINEVENT_SKIPOWNPROCESS = 0x02 Global Const $WINEVENT_SKIPOWNTHREAD = 0x01 #ce ; ========= MS Active Accessibility interface ========= ; Copied from CUIAutomation2.au3 by junkew Global Const $sIID_IAccessible="{618736E0-3C3D-11CF-810C-00AA00389B71}" Global $dtagIAccessible = "GetTypeInfoCount hresult(uint*);" & _ ; IDispatch "GetTypeInfo hresult(uint;int;ptr*);" & _ "GetIDsOfNames hresult(struct*;wstr;uint;int;int);" & _ "Invoke hresult(int;struct*;int;word;ptr*;ptr*;ptr*;uint*);" & _ "get_accParent hresult(ptr*);" & _ ; IAccessible "get_accChildCount hresult(long*);" & _ "get_accChild hresult(variant;idispatch*);" & _ "get_accName hresult(variant;bstr*);" & _ "get_accValue hresult(variant;bstr*);" & _ "get_accDescription hresult(variant;bstr*);" & _ "get_accRole hresult(variant;variant*);" & _ "get_accState hresult(variant;variant*);" & _ "get_accHelp hresult(variant;bstr*);" & _ "get_accHelpTopic hresult(bstr*;variant;long*);" & _ "get_accKeyboardShortcut hresult(variant;bstr*);" & _ "get_accFocus hresult(struct*);" & _ "get_accSelection hresult(variant*);" & _ "get_accDefaultAction hresult(variant;bstr*);" & _ "accSelect hresult(long;variant);" & _ "accLocation hresult(long*;long*;long*;long*;variant);" & _ "accNavigate hresult(long;variant;variant*);" & _ "accHitTest hresult(long;long;variant*);" & _ "accDoDefaultAction hresult(variant);" & _ "put_accName hresult(variant;bstr);" & _ "put_accValue hresult(variant;bstr);" Global Const $tIID_IAccessible = CLSIDFromString( $sIID_IAccessible ) ; ===================================================== Global Const $hdllOleacc = DllOpen( "oleacc.dll" ) OnAutoItExitRegister( "ExitMSAccessibility" ) Func ExitMSAccessibility() DllClose( $hdllOleacc ) EndFunc Func AccessibleChildren( $paccContainer, $iChildStart, $iChildren, ByRef $tVarChildren, ByRef $iObtained ) Local $sVarArray = "" For $i = 1 To $iChildren $sVarArray &= $tagVARIANT Next $tVarChildren = DllStructCreate( $sVarArray ) Local $aRet = DllCall( "oleacc.dll", "int", "AccessibleChildren", "ptr", $paccContainer, "int", $iChildStart, "int", $iChildren, "struct*", $tVarChildren, "int*", 0 ) If @error Then Return SetError(1, 0, $S_FALSE) If $aRet[0] Then Return SetError(2, 0, $aRet[0]) $iObtained = $aRet[5] Return $S_OK EndFunc Func AccessibleObjectFromEvent( $hWnd, $iObjectID, $iChildID, ByRef $pAccessible, ByRef $tVarChild ) Local $tVARIANT = DllStructCreate( $tagVARIANT ) Local $aRet = DllCall( $hdllOleacc, "int", "AccessibleObjectFromEvent", "hwnd", $hWnd, "dword", $iObjectID, "dword", $iChildID, "ptr*", 0, "struct*", $tVARIANT ) If @error Then Return SetError(1, 0, $S_FALSE) If $aRet[0] Then Return SetError(2, 0, $aRet[0]) $pAccessible = $aRet[4] $tVarChild = $aRet[5] Return $S_OK EndFunc Func AccessibleObjectFromPoint( $x, $y, ByRef $pAccessible, ByRef $tVarChild ) Local $tPOINT = DllStructCreate( "long;long" ) DllStructSetData( $tPOINT, 1, $x ) DllStructSetData( $tPOINT, 2, $y ) Local $tPOINT64 = DllStructCreate( "int64", DllStructGetPtr( $tPOINT ) ) Local $tVARIANT = DllStructCreate( $tagVARIANT ) Local $aRet = DllCall( $hdllOleacc, "int", "AccessibleObjectFromPoint", "int64", DllStructGetData( $tPOINT64, 1 ), "ptr*", 0, "struct*", $tVARIANT ) If @error Then Return SetError(1, 0, $S_FALSE) If $aRet[0] Then Return SetError(2, 0, $aRet[0]) $pAccessible = $aRet[2] $tVarChild = $aRet[3] Return $S_OK EndFunc Func AccessibleObjectFromWindow( $hWnd, $iObjectID, $tRIID, ByRef $pObject ) Local $aRet = DllCall( $hdllOleacc, "int", "AccessibleObjectFromWindow", "hwnd", $hWnd, "dword", $iObjectID, "struct*", $tRIID, "int*", 0 ) If @error Then Return SetError(1, 0, $S_FALSE) If $aRet[0] Then Return SetError(2, 0, $aRet[0]) $pObject = $aRet[4] Return $S_OK EndFunc Func WindowFromAccessibleObject( $pAccessible, ByRef $hWnd ) Local $aRet = DllCall( $hdllOleacc, "int", "WindowFromAccessibleObject", "ptr", $pAccessible, "hwnd*", 0 ) If @error Then Return SetError(1, 0, $S_FALSE) If $aRet[0] Then Return SetError(2, 0, $aRet[0]) $hWnd = $aRet[2] Return $S_OK EndFunc Func GetRoleText( $iRole, $sRole, $iRoleMax ) Local $aRet = DllCall( $hdllOleacc, "uint", "GetRoleTextW", "dword", $iRole, "ptr", $sRole, "uint", $iRoleMax ) If @error Then Return SetError(1, 0, 0) If Not $aRet[0] Then Return SetError(2, 0, 0) Return $aRet[0] EndFunc Func GetStateText( $iStateBit, $sStateBit, $iStateBitMax ) Local $aRet = DllCall( $hdllOleacc, "uint", "GetStateTextW", "dword", $iStateBit, "ptr", $sStateBit, "uint", $iStateBitMax ) If @error Then Return SetError(1, 0, 0) If Not $aRet[0] Then Return SetError(2, 0, 0) Return $aRet[0] EndFunc ; Copied form WinAPISys.au3 ; Authors: KaFu, Yashied, Jpm Func SetWinEventHook($iEventMin, $iEventMax, $pEventProc, $iProcessID = 0, $iThreadID = 0, $iFlags = 0) Local $Ret = DllCall('user32.dll', 'handle', 'SetWinEventHook', 'uint', $iEventMin, 'uint', $iEventMax, 'ptr', 0, _ 'ptr', $pEventProc, 'dword', $iProcessID, 'dword', $iThreadID, 'uint', $iFlags) If @error Then Return SetError(@error, @extended, 0) Return $Ret[0] EndFunc ; Copied form WinAPISys.au3 ; Authors: KaFu, Yashied, Jpm Func UnhookWinEvent($hEventHook) Local $Ret = DllCall('user32.dll', 'bool', 'UnhookWinEvent', 'handle', $hEventHook) If @error Then Return SetError(@error, @extended, False) Return $Ret[0] EndFunc ; Copied form WinAPICom.au3 ; Authors: Yashied, Jpm Func CoTaskMemFree($pMemory) DllCall('ole32.dll', 'none', 'CoTaskMemFree', 'ptr', $pMemory) If @error Then Return SetError(@error, @extended, 0) Return 1 EndFunc ; Copied and slightly modified from AutoItObject.au3 by the AutoItObject-Team Func CLSIDFromString( $sIID ) Local $tCLSID = DllStructCreate( "dword;word;word;byte[8]" ) Local $aRet = DllCall( "ole32.dll", "long", "CLSIDFromString", "wstr", $sIID, "struct*", $tCLSID ) If @error Then Return SetError(1, @error, 0) If $aRet[0] <> 0 Then Return SetError(2, $aRet[0], 0) Return $tCLSID EndFunc Func PrintElementInfo( $oElement, $iChild, $sIndent ) Local $sName, $iRole, $sRole, $iRoleLen Local $iState, $sState, $iStateLen Local $sValue, $x, $y, $w, $h If $iChild <> $CHILDID_SELF Then _ ConsoleWrite( $sIndent & "$iChildElem = " & $iChild & @CRLF ) $oElement.get_accName( $iChild, $sName ) ConsoleWrite( $sIndent & "$sName = " & $sName & @CRLF ) If $oElement.get_accRole( $iChild, $iRole ) = $S_OK Then ConsoleWrite( $sIndent & "$iRole = 0x" & Hex( $iRole ) & @CRLF ) $iRoleLen = GetRoleText( $iRole, 0, 0 ) + 1 $sRole = DllStructCreate( "wchar[" & $iRoleLen & "]" ) GetRoleText( $iRole, DllStructGetPtr( $sRole ), $iRoleLen ) ConsoleWrite( $sIndent & "$sRole = " & DllStructGetData( $sRole, 1 ) & @CRLF ) EndIf If $oElement.get_accState( $iChild, $iState ) = $S_OK Then ConsoleWrite( $sIndent & "$iState = 0x" & Hex( $iState ) & @CRLF ) $iStateLen = GetStateText( $iState, 0, 0 ) + 1 $sState = DllStructCreate( "wchar[" & $iStateLen & "]" ) GetStateText( $iState, DllStructGetPtr( $sState ), $iStateLen ) ConsoleWrite( $sIndent & "$sState = " & DllStructGetData( $sState, 1 ) & @CRLF ) EndIf If $oElement.get_accValue( $iChild, $sValue ) = $S_OK Then _ ConsoleWrite( $sIndent & "$sValue = " & $sValue & @CRLF ) IF $oElement.accLocation( $x, $y, $w, $h, $iChild ) = $S_OK Then _ ConsoleWrite( $sIndent & "$x, $y, $w, $h = " & $x & ", " & $y & ", " & $w & ", " & $h & @CRLF ) ConsoleWrite( @CRLF ) EndFunc mLipok 1 Controls, File Explorer, ROT objects, UI Automation, Windows Message MonitorCompiled code: Accessing AutoIt variables, DotNet.au3 UDF, Using C# and VB codeShell menus: The Context menu, The Favorites menu. Shell related: Control Panel, System Image ListsGraphics related: Rubik's Cube, OpenGL without external libraries, Navigating in an image, Non-rectangular selectionsListView controls: Colors and fonts, Multi-line header, Multi-line items, Checkboxes and icons, Incremental searchListView controls: Virtual ListViews, Editing cells, Data display functions Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now