Danp2 Posted December 9, 2015 Share Posted December 9, 2015 You are calling WinMove with the wrong parameters. The first two parameters should be title and text. Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
nomisre Posted December 9, 2015 Author Share Posted December 9, 2015 (edited) You are calling WinMove with the wrong parameters. The first two parameters should be title and text.Then again, I'm still not sure where to put this code in my script.WinMove("title","text",1468,211,1280,1024)1468 and 211 should be the positions for the second screen Edited December 9, 2015 by nomisre Link to comment Share on other sites More sharing options...
mLipok Posted December 9, 2015 Share Posted December 9, 2015 Not always Title and Text is neededhttps://www.autoitscript.com/autoit3/docs/functions/WinMove.htmtitleThe title/hWnd/class of the window to move/resize. See Title special definition. #include <IE.au3> _Example() Func _Example() ; Opens two IE sessions with three example tabs Local $oIE1 = _IECreate("www.google.nl") Local $IEhwnd1 = _IEPropertyGet($oIE1, "hwnd") __IENavigate($oIE1, "http://www.nu.nl", 0, 0x800) __IENavigate($oIE1, "http://www.telegraaf.nl", 0, 0x800) Local $oIE2 = _IECreate("www.google.nl") Local $IEhwnd2 = _IEPropertyGet($oIE2, "hwnd") __IENavigate($oIE2, "http://www.nu.nl", 0, 0x800) __IENavigate($oIE2, "http://www.telegraaf.nl", 0, 0x800) ; Set full screen Send("{F11}") ; Tab loop While 1 If WinExists($IEhwnd) Then WinActivate($IEhwnd) Else ExitLoop EndIf WinMove($IEhwnd2,"",1468,211,1280,1024) Sleep(5000) Send("^{TAB}") WEnd _IEQuit($oIE1) _IEQuit($oIE2) EndFunc Signature beginning:* Please remember: "AutoIt"..... * Wondering who uses AutoIt and what it can be used for ? * Forum Rules ** ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Code * for other useful stuff click the following button: Spoiler Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API * ErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 * My contribution to others projects or UDF based on others projects: * _sql.au3 UDF * POP3.au3 UDF * RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF * SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane * Useful links: * Forum Rules * Forum etiquette * Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * Wiki: * Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX IE Related: * How to use IE.au3 UDF with AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler * IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related: * How to get reference to PDF object embeded in IE * IE on Windows 11 * I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions * EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *I also encourage you to check awesome @trancexx code: * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuff * OnHungApp handler * Avoid "AutoIt Error" message box in unknown errors * HTML editor * winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/ "Homo sum; humani nil a me alienum puto" - Publius Terentius Afer"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming" , be and \\//_. Anticipating Errors : "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty." Signature last update: 2023-04-24 Link to comment Share on other sites More sharing options...
nomisre Posted December 10, 2015 Author Share Posted December 10, 2015 (edited) Not always Title and Text is neededhttps://www.autoitscript.com/autoit3/docs/functions/WinMove.htmtitleThe title/hWnd/class of the window to move/resize. See Title special definition. #include <IE.au3> _Example() Func _Example() ; Opens two IE sessions with three example tabs Local $oIE1 = _IECreate("www.google.nl") Local $IEhwnd1 = _IEPropertyGet($oIE1, "hwnd") __IENavigate($oIE1, "http://www.nu.nl", 0, 0x800) __IENavigate($oIE1, "http://www.telegraaf.nl", 0, 0x800) Local $oIE2 = _IECreate("www.google.nl") Local $IEhwnd2 = _IEPropertyGet($oIE2, "hwnd") __IENavigate($oIE2, "http://www.nu.nl", 0, 0x800) __IENavigate($oIE2, "http://www.telegraaf.nl", 0, 0x800) ; Set full screen Send("{F11}") ; Tab loop While 1 If WinExists($IEhwnd) Then WinActivate($IEhwnd) Else ExitLoop EndIf WinMove($IEhwnd2,"",1468,211,1280,1024) Sleep(5000) Send("^{TAB}") WEnd _IEQuit($oIE1) _IEQuit($oIE2) EndFunc Hmm, still doesn't work... Even after trying all kinds of different positions.EDIT:After trying WinMove($IEhwnd1,"",-8,-8,1280,1024) and WinMove($IEhwnd2,"",1272,-8,1280,1024), I managed to get one session on both screens The only problem now is, is that they are not full screen (F11) and one of them isn't switching to the next tab. Edited December 10, 2015 by nomisre Link to comment Share on other sites More sharing options...
LarsJ Posted December 10, 2015 Share Posted December 10, 2015 The code in first link in post 3 by mLipok is not too hard to implement based on the MSAA API. MSAccessibility.au3 below is an updated version of the API. Constants already included in AutoIt 3.3.14 are commented out, and IAccessible interface in CUIAutomation2.au3 by junkew is included.test.au3expandcollapse popup#include <IE.au3> #include <GUIConstants.au3> #include <WinAPIConstants.au3> #include <WinAPI.au3> #include "MSAccessibility.au3" Global $aAccObjects[100][3], $iAccObjects = 0 Example() Func Example() ; Opens IE with three tabs Local $oIE1 = _IECreate("www.google.nl") _IELoadWait($oIE1) Local $hwndIE1 = _IEPropertyGet($oIE1, "hwnd") __IENavigate($oIE1, "http://www.nu.nl", 0, 0x800) _IELoadWait($oIE1) Local $oIE2 = Null Do Sleep(10) $oIE2 = _IEAttach('http://www.nu.nl', 'url', 1) Until Not @error Local $hwndIE2 = _IEPropertyGet($oIE2, "hwnd") __IENavigate($oIE1, "http://www.telegraaf.nl", 0, 0x800) _IELoadWait($oIE1) Local $oIE3 = Null Do Sleep(10) $oIE3 = _IEAttach('http://www.telegraaf.nl', 'url', 1) Until Not @error Local $hwndIE3 = _IEPropertyGet($oIE3, "hwnd") MsgBox(0, @ScriptLineNumber, 'test') 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], 10, 10, 380, 40 ) For $i = 1 To $iAccCount - 1 GUICtrlCreateButton( $aAccObjects[$iAccFirst+$i][1], 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 EndFunc 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 ) EndFuncMSAccessibility.au3expandcollapse 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 ) EndFuncAll code is included in the zip: IETabs.7z 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...
nomisre Posted December 10, 2015 Author Share Posted December 10, 2015 (edited) It's almost working now See my code below.The only problems I have now are:During switching tabs on the first screen: full screen -> not full screen (maximized) -> full screen -> not full screen (maximized), etc etcOn the second screen: maximized window (so not full screen) and switching to the next tab doesn't work expandcollapse popup#include <IE.au3> _Example() Func _Example() ; Opens two IE sessions with three example tabs Local $oIE1 = _IECreate("www.google.nl") Local $IEhwnd1 = _IEPropertyGet($oIE1, "hwnd") __IENavigate($oIE1, "http://www.nu.nl", 0, 0x800) __IENavigate($oIE1, "http://www.telegraaf.nl", 0, 0x800) Local $oIE2 = _IECreate("www.google.nl") Local $IEhwnd2 = _IEPropertyGet($oIE2, "hwnd") __IENavigate($oIE2, "http://www.nu.nl", 0, 0x800) __IENavigate($oIE2, "http://www.telegraaf.nl", 0, 0x800) ; Tab loop While 1 If WinExists($IEhwnd1) Then WinActivate($IEhwnd2) Else ExitLoop EndIf WinMove($IEhwnd1,"",1272,-8,1280,1024) WinMove($IEhwnd2,"",-8,-8,1280,1024) Send("{F11}") ; Set full screen Sleep(5000) Send("^{TAB}") WEnd _IEQuit($oIE1) _IEQuit($oIE2) EndFunc Edited December 10, 2015 by nomisre 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