Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] z FF.au3


Rekomendowane odpowiedzi

Opublikowano

Witam,

Gdy napisałem takie coś:

Func loginekwff()
_FFStart("http://ts2.travian.pl/"); włącza nam stronkę PrisonWars'a
_FFConnect()
$obiekt_login = _FFObjGet("name", "name"); pobiera do zmiennej $obekt_login obiekt o parametrze name = "login"
$obiekt_haslo = _FFObjGet("password", "name"); pobiera do zmiennej $obekt_haslo obiekt o parametrze name = "pass"
_FFObj($obiekt_login, "value", $loginek); ustawia wartość obiektu na nasz login
_FFObj($obiekt_haslo, "value", $haslo); ustawia wartość obiektu na nasze hasełko
_FFFormSubmit(); wysyła formularz
;_FFOpenURL()
EndFunc

to włączają mi się 2 przeglądarki jedna z adresem 4242 a druga normalnie nie wiem co jest grane :(

Oto kod biblioteki:

 

; :wrap=none:collapseFolds=1:maxLineLen=80:mode=autoitscript:tabSize=8:folding=indent:; created with jEdit4AutoIt#include-once#Region Copyright#cs* FF.au3** This program is free software; you can redistribute it and/or* modify it under the terms of the GNU General Public License* as published by the Free Software Foundation; either version 2* of the License, or any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.#ce#EndRegion Copyright#Region Many thanks to:#cs- Jonathan Bennett and the AutoIt Team for AutoIt v3 the freewareBASIC-like scripting language(and thanks John George Kemeny and Thomas Eugene Kurtz for BASIC)- Dale Hohm, for his great IE.au3, which I've used as base for thefunctions-names and the error handling.- Johannes Schirmer, for some functions and suggestions for the FF.au3- all others for their suggestions, bug reports ...- the FireFox-Team for his fantastic browser- and Massimiliano Mirra, without his work would this UDF impossible,for MozLab / MozRepl#ce#EndRegion Many thanks to:#Region #CURRENT# ==============================================================;_FFAction;_FFClick;_FFCmd;_FFConnect;_FFDialogWait;_FFDisConnect;_FFDispatchEvent;_FFFormCheckBox;_FFFormGetElementsLength;_FFFormOptionSelect;_FFFormRadioButton;_FFFormReset;_FFFormSubmit;_FFFrameEnter;_FFFrameLeave;_FFGetLength;_FFGetObjectInfo;_FFGetPosition;_FFGetValue;_FFImageClick;_FFImageGetBySize;_FFImageMapClick;_FFIsConnected;_FFLinkClick;_FFLinksGetAll;_FFLoadWait;_FFLoadWaitTimeOut;_FFObj;_FFObjDelete;_FFObjGet;_FFObjNew;_FFOpenURL;_FFPrefGet;_FFPrefReset;_FFPrefSet;_FFQuit;_FFReadHTML;_FFReadText;_FFSearch;_FFSetValue;_FFStart;_FFTabAdd;_FFTabClose;_FFTabDuplicate;_FFTabExists;_FFTabGetSelected;_FFTabSetSelected;_FFTableWriteToArray;_FFWindowClose;_FFWindowGetHandle;_FFWindowOpen;_FFWindowSelect;_FFWriteHTML;_FFXPath#EndRegion #CURRENT# ==============================================================#Region Description; ==============================================================================; UDF ...........: FF.au3Global Const $_FF_AU3VERSION = "0.6.0.1b-3"; Description ...: An UDF for FireFox automation.; Requirement ...: MozRepl AddOn:; http://hyperstruct.net/projects/mozlab; http://wiki.github.c...rd/mozrepl/home; Author(s) .....: Thorsten Willert, Johannes Schirmer; Date ..........: Tue Feb 16 12:56:50 CET 2010 @539 /Internet Time/; FireFox Version: Firefox/3.6 (required 3.x.x); AutoIt Version : v3.3.0.0; ==============================================================================#csV0.6.0.1b-3- Changed: Default values for _FFXpath: _FFXPath($sQuery, $sAttribute = "", $iReturnType = 9, $iFilter = 0)- Fixed: Different problems after _FFOpenURL- Fixed: Errorin _FFAu3Option()<V0.6.x.xFor compatibily for older scripts, please use this UDF:http://thorsten-will...FF.au3/FFEx.au3ToDo:Textsuche (name, id, text ...) per Substring, String, RegExEvents fuer die _FFForm* FunktionenUpdate der Window-Funktionen#ce#EndRegion Description#Region Global ConstantsGlobal Const $_FF_PROC_NAME = "firefox.exe" ; Firefox process nameGlobal Const $_FF_COM_DELAY_MAX = 200 ; alternative connection delay in msGlobal Enum $_FF_ERROR_Success = 0, _ ; No error $_FF_ERROR_GeneralError, _ ; General error $_FF_ERROR_SocketError, _ ; No socket $_FF_ERROR_InvalidDataType, _ ; Invalid data type (IP, URL, Port ...) $_FF_ERROR_InvalidValue, _ ; Invalid value in function-call $_FF_ERROR_SendRecv, _ ; Send / Recv Error $_FF_ERROR_Timeout, _ ; Connection / Send / Recv timeout $_FF_ERROR___UNUSED, _ ; $_FF_ERROR_NoMatch, _ ; No match for _FFAction-find/search _FFGetElement... $_FF_ERROR_RetValue, _ ; Error echo from Repl e.g. _FFAction("fullscreen","true") <> "true" $_FF_ERROR_ReplException, _ ; Exception from MozRepl / FireFox $_FF_ERROR_InvalidExpression ; Invalid expression in XPath query or RegEx#EndRegion Global Constants#Region Global VariablesGlobal $_FF_GLOBAL_SOCKET = -1 ; SocketGlobal $_FF_CON_DELAY ; Connection DelayGlobal $_FF_LOADWAIT_TIMEOUT = 120000Global $_FF_LOADWAIT_STOP = True ; stop loading after $_FF_LOADWAIT_TIMEOUTGlobal $_FF_COM_TRACE = True ; Trace communication to console (debugging)Global $_FF_ERROR_MSGBOX = True ; Shows in compiled scripts error messages in msgboxesGlobal $_FF_FRAME = 'top'Global $_FF_SEARCH_MODE = 0 ; 0 = Substring / 1 = Compare#EndRegion Global Variables; #FUNCTION# ===================================================================; Name ..........: _FFAction; Description ...: Some standard actions to work with FireFox; Beschreibung ..: Standardaktionen in FireFox; AutoIt Version : V3.3.0.0; Syntax ........: _FFAction($sAction[, $vOption = ""[, $vOption2 = ""[, $bLoadWait = True]]]); Parameter(s): .: $sAction - one of the following actions:; | about; | alert; | back; | blank; | copy; | fullscreen / fs; | hideall; | home; | maximize / max; | minimize / min; | presentationmode / pm; | print; | reload; | resetconsole; | restore; | scrollXY; | stop; | zoom; $vOption - Optional: (Default = "") :; $vOption2 - Optional: (Default = "") :; $bLoadWait - Optional: (Default = true) :; Return Value ..: Success - Return-value from MozRepl (sometimes an empty string!!!); Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Dec 04 16:39:49 CET 2009; Link ..........: http://developer.moz.../XUL:tabbrowser, http://developer.moz...reloadWithFlags, https://developer.mo...Window.scrollBy, http://kb.mozillazin..._Protocol_Links; Related .......:; Example .......: Yes; ==============================================================================Func _FFAction($sAction, $vOption = "", $vOption2 = "", $bLoadWait = True)Local Const $sFuncName = "_FFAction"Local $sCommandLocal $sActionL = StringLower($sAction)Select Case $sActionL = "back" $sCommand = "gBrowser.goBack()" Case $sActionL = "home" $sCommand = "gBrowser.goHome()" Case $sActionL = "forward" $sCommand = "gBrowser.goForward()" Case $sActionL = "copy" Return _FFCmd(".getSelection()", $_FF_CON_DELAY + 100) Case $sActionL = "reload" And $vOption <> "" $sCommand = "gBrowser.reloadWithFlags('" & $vOption & "')" Case $sActionL = "reload" $sCommand = "gBrowser.reload()" Case $sActionL = "fullscreen" Or $sActionL = "fs" And $vOption $sCommand = "fullScreen=true" $bLoadWait = False Case $sActionL = "fullscreen" Or $sActionL = "fs" And Not $vOption $sCommand = "fullScreen=false" $bLoadWait = False Case $sActionL = "minimize" Or $sActionL = "min" $bLoadWait = False $sCommand = "minimize()" Case $sActionL = "maximize" Or $sActionL = "max" $bLoadWait = False $sCommand = "maximize()" Case $sActionL = "restore" $bLoadWait = False $sCommand = "restore()" Case $sActionL = "stop" $bLoadWait = False $sCommand = "gBrowser.stop()" Case $sActionL = "print" $bLoadWait = False $sCommand = "content.print()" Case $sActionL = "find" Or $sActionL = "search" _FFLoadWait() $sCommand = "content.find()" Case $sActionL = "hideall" And $vOption Return _FFCmd("toggleAffectedChrome(true);") Case $sActionL = "hideall" And Not $vOption Return _FFCmd("toggleAffectedChrome(false);") Case $sActionL = "presentationmode" Or $sActionL = "pm" And $vOption Return _FFCmd("toggleAffectedChrome(true)" & @CRLF & "fullScreen=true") Case $sActionL = "presentationmode" Or $sActionL = "pm" And Not $vOption Return _FFCmd("toggleAffectedChrome(false)" & @CRLF & "fullScreen=false") Case $sActionL = "alert" And $vOption <> "" $sCommand = 'alert("' & __FFValue2JavaScript($vOption) & '")' $bLoadWait = False Case $sActionL = "chrome" And $vOption <> "" $sCommand = '.location.href="' & __FFChromeSelect($vOption) & '"' Case $sActionL = "blank" $vOption = "blank" ContinueCase Case $sActionL = "about" $sCommand = '.location.href="about:' & $vOption & '"' Case $sActionL = "scrollxy" And IsInt($vOption) And IsInt($vOption2) $sCommand = "window.content.scrollBy(" & $vOption & "," & $vOption2 & ");" $bLoadWait = False Case $sActionL = "zoom" And $vOption = "" $vOption = 1 ContinueCase Case $sActionL = "zoom" And IsNumber($vOption) $sCommand = "gBrowser.selectedBrowser.markupDocumentViewer.fullZoom=" & $vOption $bLoadWait = False Case $sActionL = "resetconsole" $sCommand = ";" & @CRLF & "repl.home()" $bLoadWait = False Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sAction: " & $sAction & " or " & "$vOption :" & $vOption & " or " & "$vOption2 :" & $vOption2)) Return ""EndSelectLocal $sRet = _FFCmd($sCommand)If Not @error Then If $bLoadWait Then _FFLoadWait() Return $sRetElse SetError(@error) Return ""EndIfEndFunc ;==>_FFAction; #FUNCTION# ===================================================================; Name ..........: _FFClick; Description ...: Simulates a click on an element.; Beschreibung ..: Simuliert einen Klick auf ein Element.; AutoIt Version : V3.3.0.0; Syntax ........: _FFClick($sElement[, $sMode = "elements"[, $iIndex = 0[, $bLoadWait = True]]]); Parameter(s): .: $sElement - Element to click on; $sMode - Optional: (Default = "elements") :; | elements; | id; | name; | class; | tag; $iIndex - Optional: (Default = 0) : Index if $sMode = class, name, tag; $bLoadWait - Optional: (Default = True) :; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Jan 22 14:50:40 CET 2010; Link ..........:; Related .......: _FFImageClick, _FFLinkClick. _FFImageMapClick; Example .......: Yes; ==============================================================================Func _FFClick($sElement, $sMode = "elements", $iIndex = 0, $bLoadWait = True)Local Const $sFuncName = "_FFClick"If Not IsInt($iIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex)) Return 0EndIfIf $sMode = Default Then $sMode = "elements"If $iIndex = Default Then $iIndex = 0Switch StringLower($sMode) Case "elements" If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Case "id" $sElement = ".getElementById('" & $sElement & "')" Case "name" $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode)) Return 0EndSwitchIf StringLeft($sElement, 1) = "." Then $sElement = "FFau3.WCD" & $sElementLocal $RetVal = _FFCmd("FFau3.simulateEvent(" & $sElement & ",'MouseEvents','click');")If Not @error And $RetVal <> "_FFCmd_Err" And $RetVal = 1 Then Sleep(25) If $bLoadWait Then Return _FFLoadWait() Return 1Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement)) Return 0EndIfEndFunc ;==>_FFClick; #FUNCTION# ===================================================================; Name ..........: _FFDialogWait; Description ...: Waits for a browser-dialog-message (e.g. alert) and closes it.; Beschreibung ..: Wartet auf ein Dialog-Fenster (z.B.: alert) und schlieĂ?t es.; AutoIt Version : V3.3.0.0; Syntax ........: _FFDialogWait($sText[, $sTitle = ""[, $sClose = "close"[, $iTimeOut = 10000]]]); Parameter(s): .: $sText - Text in the dialog (substring); $sTitle - Optional: (Default = "") : Window-title of the dialog (substring); $bClose - Optional: (Default = "close") :; | close = Just closes the dialog window; | open = Do nothing; | ok = Uses the "ok"-button; | cancel = Uses the"cancel"-button; $iTimeOut - Optional: (Default = 10000) : Timeout for waiting (min. 1000ms); Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Tue Apr 14 12:18:08 CEST 2009; Link ..........:; Related .......: _FFLoadWait; Example .......: Yes; ==============================================================================Func _FFDialogWait($sText, $sTitle = "", $sClose = "close", $iTimeOut = 10000)Local Const $sFuncName = "_FFDialogWait"If $sTitle = "" And $sText = "" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Empty String: $sText and $sTitle")) Return 0EndIfIf $sClose = Default Then $sClose = "close"If $iTimeOut < 1000 Then $iTimeOut = 1000Local $bFound = False, $b1 = False, $b2 = FalseLocal $iTimer = TimerInit()While TimerDiff($iTimer) < $iTimeOut If _FFCmd('FFau3.obj=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("").window;' & _ 'FFau3.obj.document.documentURI') = "chrome://global/content/commonDialog.xul" Then If $sTitle <> "" Then If StringInStr(_FFCmd("FFau3.obj.title"), $sTitle) Then $b1 = True EndIf If $sText <> "" Then If StringInStr(_FFCmd("FFau3.obj.document.documentElement.textContent"), $sText) Then $b2 = True EndIf Select Case $sTitle = "" And $sText <> "" And Not $b1 And $b2 $bFound = True Case $sTitle <> "" And $sText <> "" And $b1 And $b2 $bFound = True Case $sTitle <> "" And $sText = "" And $b1 And Not $b2 $bFound = True Case Else $bFound = False EndSelect If $bFound Then Switch StringLower($sClose) Case "close" ; just close the window _FFCmd("FFau3.obj.close()") Case "ok" _FFCmd("FFau3.obj.document.documentElement.acceptDialog()") Case "cancel" _FFCmd("FFau3.obj.document.documentElement.cancelDialog()") Case "open" ; do nothing Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sClose: " & $sClose)) Return 0 EndSwitch Return 1 EndIf EndIf Sleep(500)WEndSetError(__FFError($sFuncName, $_FF_ERROR_Timeout, Round(TimerDiff($iTimer)) & "ms > " & $iTimeOut & "ms"))Return 0EndFunc ;==>_FFDialogWait; #FUNCTION# ===================================================================; Name ..........: _FFImageClick; Description ...: Clicks an image-link.; Beschreibung ..: Klickt einen Image-Link.; AutoIt Version : V3.3.0.0; Syntax ........: _FFImageClick($vSearch[, $sMode = "src"[, $bLoadWait = True]]); Parameter(s): .: $vSearch - String to search or number (0-n) in index mode (the search is performed in the attributes of the image and the link); $sMode - Optional: (Default = "src") :; | alt; | href; | id; | index; | name; | src; | title; $bLoadWait - Optional: (Default = True) :; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Dec 04 14:55:57 CET 2009; Link ..........:; Related .......: _FFClick, _FFLinkClick, _FFImageMapClick; Example .......: Yes; ==============================================================================Func _FFImageClick($vSearch, $sMode = "src", $bLoadWait = True)Local Const $sFuncName = "_FFImageClick"Local $sX$sMode = StringLower($sMode)$vSearch = __FFValue2JavaScript($vSearch)Switch $sMode Case "index" If Not IsInt($vSearch) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vSearch: " & $vSearch)) Return 0 EndIf $sX = ".images[" & $vSearch & "]" Case "id", "src", "href", "alt", "name", "title" Switch $_FF_SEARCH_MODE Case 0 $sX = "contains(@" & $sMode & ",'" & $vSearch & "')" Case 1 $sX = "@" & $sMode & "='" & $vSearch & "'" EndSwitch Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(src|href|alt|name|title|id|index) $sMode: " & $sMode)) Return 0EndSwitchIf $sMode <> "index" Then If _FFClick(_FFXPath("//a//img[" & $sX & "] | //a[" & $sX & "]//img", "", 9)) Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIfElse If _FFClick($sX) Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIfEndIfSetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vSearch: " & $vSearch))Return 0EndFunc ;==>_FFImageClick; #FUNCTION# ===================================================================; Name ..........: _FFImageMapClick; Description ...: Clicks on area of an image-map; Beschreibung ..: Klickt auf ein Area einer Image-map; AutoIt Version : V3.3.0.0; Syntax ........: _FFImageMapClick($vArea[, $sModeArea = "index"[, $vMap = 0[, $sModeMap = "index"[, $bLoadWait = True]]]]); Parameter(s): .: $vArea - (substring); $sModeArea - Optional: (Default = "index") :; | alt; | class; | coords; | href; | id; | index; | name; | title; $vMap - Optional: (Default = 0) : (substring); $sModeMap - Optional: (Default = "index") :; | class; | id; | index; | name; | title; $bLoadWait - Optional: (Default = True) :; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Sep 28 10:39:55 CEST 2009; Related .......: _FFClick, _FFLinkClick, _FFImageClick; Example .......: Yes; ==============================================================================Func _FFImageMapClick($vArea, $sModeArea = "index", $vMap = 0, $sModeMap = "index", $bLoadWait = True)Local Const $sFuncName = "_FFImageMapClick"Local $sXPath$sModeArea = StringLower($sModeArea)$sModeMap = StringLower($sModeMap)Switch $sModeMap Case "index" If Not IsInt($vMap) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vMap: " & $vMap)) Return 0 EndIf $sXPath = "//map[" & $vMap + 1 & "]" Case "id", "name", "title", "class" $sXPath = "//map[contains(@" & $sModeMap & ",'" & $vMap & "')]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(name|title|id|index|class) $sModeMap: " & $sModeMap)) Return 0EndSwitchSwitch $sModeArea Case "index" If Not IsInt($vMap) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vArea: " & $vArea)) Return 0 EndIf $sXPath &= "//area[" & $vArea & "]" Case "id", "name", "title", "alt", "href", "class", "coords" $sXPath &= "//area[contains(@" & $sModeArea & ",'" & $vArea & "')]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|id|name|title|alt|href|coords|class) $sModeArea: " & $sModeArea)) Return 0EndSwitchIf _FFClick(_FFXPath($sXPath, "", 9)) Then If $bLoadWait Then Return _FFLoadWait() Return 1EndIfSetError(__FFError($sFuncName, $_FF_ERROR_NoMatch))Return 0EndFunc ;==>_FFImageMapClick; #FUNCTION# ===================================================================; Name ..........: _FFImagesGetBySize; Description ...: Returns an array with the index of matching images.; Beschreibung ..: Liefert ein Array mit den Indizes der passenden Bilder.; Syntax ........: _FFImagesGetBySize($iHeight, $iWidth[, $sMode = "eq"[, $iPercent = 0]]); Parameter(s): .: $iHeight - Heigth of the image(s); $iWidth - Width of the image(s); $sMode - Optional (Default = "eq") :; | eq; | lt; | gt; $iPercent - Optional (Default = 0) : +/- tolerance in percent for $sMode = "eq" (min=0, max=100); Return Value ..: Success - array[0] > 0; Failure - array[0] = 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Sep 28 10:40:47 CEST 2009; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFImagesGetBySize($iHeight, $iWidth, $sMode = "eq", $iPercent = 0)Local Const $sFuncName = "_FFImagesGetBySize"Local $aRet[1] = [0]If $iPercent < 0 Or $iPercent > 100 Then $iPercent = 0$sMode = StringLower($sMode)If Not IsInt($iHeight) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iHeight: " & $iHeight)) Return $aRetEndIfIf Not IsInt($iWidth) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iWidth: " & $iWidth)) Return $aRetEndIfSwitch $sMode Case "eq", "lt", "gt" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(eq|lt|gt) $sMode: " & $sMode)) Return $aRetEndSwitchLocal $sCommand = StringFormat("FFau3.SearchImageBySize(%s,%s,'%s',%s);", $iHeight, $iWidth, $sMode, $iPercent)Local $iIndex = StringStripWS(_FFCmd($sCommand, 10000), 3)$aRet = StringSplit($iIndex, " ")If Not @error And $aRet[0] > 0 Then For $i = 1 To $aRet[0] $aRet[$i] = Int($aRet[$i]) NextElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) Return $aRetEndIfReturn $aRetEndFunc ;==>_FFImagesGetBySize; #FUNCTION# ===================================================================; Name ..........: _FFLinkClick; Description ...: Simulates a click on a link.; Beschreibung ..: Simuliert einen Klick auf einen Link; AutoIt Version : V3.3.0.0; Syntax ........: _FFLinkClick($vSearch[, $sMode = "href"[, $bLoadWait = True]]); Parameter(s): .: $vSearch - (Sub)String to search or number (0-n) in index mode; $sMode - Optional: (Default = "href") :; | href; | alt; | name; | title; | id; | index; $bLoadWait - Optional: (Default = True) :; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Jan 22 16:09:48 CET 2010; Link ..........:; Related .......: _FFClick, _FFImageClick, _FFImageMapClick; Example .......: Yes; ==============================================================================Func _FFLinkClick($vSearch, $sMode = "href", $bLoadWait = True)Local Const $sFuncName = "_FFLinkClick"Local $sX$sMode = StringLower($sMode)If Not $sMode = "index" Then $vSearch = __FFValue2JavaScript($vSearch)Switch $sMode Case "index" If Not IsInt($vSearch) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vSearch: " & $vSearch)) Return 0 EndIf $sX = ".links[" & $vSearch & "]" Case "text" $sX = "//a[contains(.,'" & $vSearch & "')]" Case "href", "name", "title", "id" Switch $_FF_SEARCH_MODE Case 0 $sX = "//a[contains(@" & $sMode & ",'" & $vSearch & "')]" Case 1 $sX = "//a[@" & $sMode & "=" & $vSearch & &quot]" EndSwitch Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|href|text|name|title|id) $sMode: " & $sMode)) Return 0EndSwitchIf $sMode <> "index" Then Return _FFClick(_FFXPath($sX, "", 9), "elements", 0, $bLoadWait)Else Return _FFClick($sX, "elements", 0, $bLoadWait)EndIfSetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vSearch: " & $vSearch))Return 0EndFunc ;==>_FFLinkClick; #FUNCTION# ===================================================================; Name ..........: _FFFrameLeave; Description ...: Leaves the currently entered frame; Beschreibung ..: VerläĂ?t den aktuellen Frame; AutoIt Version : V3.3.0.0; Syntax ........: _FFFrameLeave(); Parameter(s): .:; Return Value ..: Success - 1; Failure - 0; Author(s) .....: Thorsten Willert; Date ..........: Fri Sep 18 11:08:20 CEST 2009 @422 /Internet Time/; Link ..........:; Related .......: _FFFrameEnter; Example .......: Yes; ==============================================================================Func _FFFrameLeave();Local Const $sFuncName = "_FFFrameLeave"Local $bTrc = $_FF_COM_TRACE$_FF_COM_TRACE = FalseLocal $sFrame = StringMid($_FF_FRAME, 1, StringInStr($_FF_FRAME, ".", 2, -1) - 1)_FFCmd("FFau3.WCD=window.content.wrappedJSObject." & $sFrame & ".document;")If Not @error Then $_FF_COM_TRACE = $bTrc $_FF_FRAME = $sFrame Return 1EndIf$_FF_COM_TRACE = $bTrcReturn 0EndFunc ;==>_FFFrameLeave; #FUNCTION# ===================================================================; Name ..........: _FFFrameEnter; Description ...: Selects a frame, which all subsequent commands apply on.; Beschreibung ..: Wählt einen Frame aus, auf den alle nachfolgenden Befehle wirken.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFrameEnter($vFrame[, $sMode = "index"]); Parameter(s): .: $vFrame - Frame name or id or number in index mode; $sMode - Optional: (Default = "index") :; | name; | id; | index; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Sat Oct 24 21:05:36 CEST 2009; Link ..........:; Related .......: _FFFrameLeave; Example .......: Yes; ==============================================================================Func _FFFrameEnter($vFrame, $sMode = "index")Local Const $sFuncName = "_FFFrameEnter"Local $sFrame = $_FF_FRAMELocal $bTrc = $_FF_COM_TRACESwitch StringLower($sMode) Case "index" If IsInt($vFrame) Then $sFrame &= ".frames[" & $vFrame & "]" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vFrame: " & $vFrame)) Return 0 EndIf Case "name", "id" If IsString($vFrame) Then $sFrame &= "." & $vFrame Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(string) $vFrame: " & $vFrame)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sMode: " & $sMode)) Return 0EndSwitch$_FF_COM_TRACE = False_FFCmd("FFau3.WCD=window.content.wrappedJSObject." & $sFrame & ".document;")If Not @error Then $_FF_FRAME = $sFrame $_FF_COM_TRACE = $bTrc Return 1EndIf$_FF_COM_TRACE = $bTrcSetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Frame not found $vFrame: " & $vFrame))Return 0EndFunc ;==>_FFFrameEnter; #FUNCTION# ===================================================================; Name ..........: _FFGetLength; Description ...: Returns the length of the elements in $sMode; Beschreibung ..: Gibt die Anzahl der angegebenen Elemente zurĂźck.; AutoIt Version : V3.3.0.0; Syntax ........: _FFGetLength([$sMode = "links"]); Parameter(s): .: $sMode - Optional: (Default = "links") :; | links; | images; | forms; | frames; | anchors; | tables; | styleSheets; | tabs; | history; | applets; | embeds; | plugins; | tag; Return Value ..: Success - Length of the elements; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 23:24:13 CET 2009 @975 /Internet Time/; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFGetLength($sMode = "links")Local Const $sFuncName = "_FFGetLength"$sMode = StringLower($sMode)Switch $sMode Case "links", "images", "forms", "anchors", "applets", "embeds" Return _FFCmd("." & $sMode & ".length") Case "tabs" Return _FFCmd("gBrowser.tabContainer.childNodes.length") Case "frames" Return _FFCmd("content.frames.length") Case "tables" Return _FFCmd(".getElementsByTagName('table').length") Case "history" Return _FFCmd("content.history.length") Case "stylesheets" Return _FFCmd(".styleSheets.length") Case "plugins" Return _FFCmd("navigator.plugins.length") Case Else Local $RetVal = _FFCmd(".getElementsByTagName('" & $sMode & "').length;") If Not @error And $RetVal <> "_FFCmd_Err" Then Return $RetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sMode: " & $sMode)) Return 0 EndIfEndSwitchReturn 0EndFunc ;==>_FFGetLength; #FUNCTION# ===================================================================; Name ..........: _FFLinksGetAll; Description ...: Returns an array with informations about all existing links.; Beschreibung ..: Gibt ein Array mit Informationen Ăźber alle vorhandenen Links zurĂźck.; AutoIt Version : V3.3.0.0; Syntax ........: _FFLinksGetAll(); Parameter(s): .:; Return Value ..: Success - 2 dim array with the link informations:; | array[n][0] = href; | array[n][1] = hash; | array[n][2] = search; | array[n][3] = name; | array[n][4] = id; | array[n][5] = text; | array[n][6] = innerHTML; | array[n][7] = target; | array[n][8] = protocol; | array[n][9] = port; Failure - array[0][0] = 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Tue Sep 22 12:00:34 CEST 2009 @458 /Internet Time/; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFLinksGetAll()Local Const $sFuncName = "_FFLinksGetAll"Local $aInfo, $sInfo, $aRet[1][9], $aTmpLocal $sDelimiterLocal $bTrc = $_FF_COM_TRACE$_FF_COM_TRACE = FalseIf _FFGetLength() > 0 Then $sDelimiter = "FF" & Random(1000, 9999, 1) $sInfo = _FFCmd('FFau3.GetLinks("' & $sDelimiter & '");') $aInfo = StringSplit($sInfo, @CRLF) If @error Then $_FF_COM_TRACE = $bTrc SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) Return $aRet[0][0] = 0 EndIf ReDim $aRet[$aInfo[0] - 1][9] For $i = 1 To $aInfo[0] - 1 $aTmp = StringSplit($aInfo[$i], $sDelimiter, 1) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, "StringSplit: " & $aInfo[$i])) ExitLoop EndIf If UBound($aTmp) <> 11 Then $sDelimiter = "FF" & Random(1000, 9999, 1) $sInfo = _FFCmd("FFau3.GetLinkInfo(" & $i & " ,'top','" & $sDelimiter & "')") $aTmp = StringSplit($sInfo, $sDelimiter, 1) EndIf For $j = 1 To $aTmp[0] - 1 $aRet[$i - 1][$j - 1] = $aTmp[$j] Next Next $_FF_COM_TRACE = $bTrc Return $aRetElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) $aRet[0][0] = 0EndIf$_FF_COM_TRACE = $bTrcSetError(__FFError($sFuncName, $_FF_ERROR_GeneralError))Return $aRet[0][0] = 0EndFunc ;==>_FFLinksGetAll; #FUNCTION# ===================================================================; Name ..........: _FFConnect; Description ...: Connects to FireFox / MozRepl; Beschreibung ..: Stellt eine Verbindung mit Firefox / MozRepl her.; AutoIt Version : V3.3.0.0; Syntax ........: _FFConnect([$IP = "127.0.0.1"[, $iPort = 4242[, $iTimeOut = 60000]]]); Parameter(s): .: $IP - Optional: (Default = "127.0.0.1") :; $iPort - Optional: (Default = 4242) :; $iTimeOut - Optional: (Default = 60000) :; Return Value ..: Success - 1 / $_FF_GLOBAL_SOCKET > -1; @EXTENDED - 1 = Non Browser-window; | 2 = Browser-window; Failure - 0 / $_FF_GLOBAL_SOCKET = -1; @ERROR -; @EXTENDED - 0; Author(s) .....: Thorsten Willert; Date ..........: Tue Aug 18 09:36:57 CEST 2009; Link ..........: http://msdn.microsof.../ms740668(VS.85).aspx; Related .......: _FFDisConnect, _FFIsConnected, _FFStart; Example .......: Yes; ==============================================================================Func _FFConnect($IP = "127.0.0.1", $iPort = 4242, $iTimeOut = 60000)Local Const $sFuncName = "_FFConnect"Local $Extended = 2If $_FF_CON_DELAY > 100 Then Opt("TCPTimeout", $_FF_CON_DELAY)If $IP = Default Then $IP = "127.0.0.1"If $iPort = Default Then $iPort = 4242If $iTimeOut = Default Then $iTimeOut = 60000If Not __FFIsIP($IP) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, $IP)) Return 0EndIfIf Not __FFIsPort($iPort) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, $iPort)) Return 0EndIfLocal $iTCPErrLocal $bTrace = $_FF_COM_TRACE$_FF_COM_TRACE = FalseConsoleWrite("_FFConnect: OS:" & @TAB & @OSVersion & " " & @OSType & " " & @OSBuild & " " & @OSServicePack & @CRLF)ConsoleWrite("_FFConnect: AutoIt:" & @TAB & @AutoItVersion & @CRLF)ConsoleWrite("_FFConnect: FF.au3:" & @TAB & $_FF_AU3VERSION & @CRLF)ConsoleWrite("_FFConnect: IP:" & @TAB & $IP & @CRLF)ConsoleWrite("_FFConnect: Port:" & @TAB & $iPort & @CRLF)TCPStartup()If Not @error Then ; delay for connection over network $_FF_CON_DELAY = Ping($IP) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Ping Error: " & @error)) $_FF_CON_DELAY = $_FF_COM_DELAY_MAX EndIf $_FF_CON_DELAY += Round($_FF_CON_DELAY * 0.5) ConsoleWrite("_FFConnect: Delay: " & @TAB & $_FF_CON_DELAY & "ms" & @CRLF) ; trying to connect Local $iTimeOutTimer = TimerInit() While 1 $_FF_GLOBAL_SOCKET = TCPConnect($IP, $iPort) $iTCPErr = @error Sleep(500) If __FFIsSocket($_FF_GLOBAL_SOCKET) Then ExitLoop If (TimerDiff($iTimeOutTimer) > $iTimeOut) Then ; Profil laden SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "TCPConnect Error: " & $iTCPErr)) $_FF_GLOBAL_SOCKET = -1 ExitLoop EndIf WEnd If $_FF_GLOBAL_SOCKET <> -1 Then ConsoleWrite("_FFConnect: Socket: " & @TAB & $_FF_GLOBAL_SOCKET & @CRLF) If __FFWaitForRepl(10000) Then _FFCmd(".browserDOMWindow") If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Warning: Connected to a non browser-window")) $Extended = 1 EndIf ConsoleWrite("_FFConnect: Browser:" & @TAB & _FFCmd("navigator.userAgent") & @CRLF) __FFSendJavaScripts() $_FF_COM_TRACE = $bTrace Return SetError(0, $Extended, 1) EndIf Else TCPShutdown() $_FF_COM_TRACE = $bTrace Return SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Timeout: Can not connect to FireFox/MozRepl on: " & $IP & ":" & $iPort), 0, 0) EndIfElse $_FF_COM_TRACE = $bTrace Return SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "TCPStartup Error: " & @error), 0, 0)EndIf$_FF_COM_TRACE = $bTraceReturn SetError($_FF_ERROR_GeneralError, $Extended, 0)EndFunc ;==>_FFConnect; #FUNCTION# ===================================================================; Name ..........: _FFDisConnect; Description ...: Disconnects from FireFox; Beschreibung ..: Trennt die Verbindung mit FireFox / MozRepl; AutoIt Version : V3.3.0.0; Syntax ........: _FFDisConnect(); Parameter(s): .:; Return Value ..: Success - 1 / $_FF_GLOBAL_SOCKET = -1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Wed Apr 15 09:54:09 CEST 2009; Link ..........: http://msdn.microsof.../ms740668(VS.85).aspx; Related .......: _FFConnect, _FFIsConnected, _FFStart; Example .......: Yes; ==============================================================================Func _FFDisConnect()Local Const $sFuncName = "_FFDisConnect"Opt("TCPTimeout", 200)If __FFIsSocket($_FF_GLOBAL_SOCKET) Then __FFSend("repl.quit()") TCPCloseSocket($_FF_GLOBAL_SOCKET) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "TCP Error: " & @error)) Return 0 EndIf TCPShutdown() If Not @error Then If $_FF_COM_TRACE Then ConsoleWrite("_FFDisConnect: disconnected" & @CRLF) $_FF_FRAME = "top" $_FF_GLOBAL_SOCKET = -1 Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "TCP Error: " & @error)) Return 0 EndIfElse SetError(__FFError($sFuncName, $_FF_ERROR_SocketError, $_FF_GLOBAL_SOCKET)) Return 0EndIfEndFunc ;==>_FFDisConnect; #FUNCTION# ===================================================================; Name ..........: _FFIsConnected; Description ...: Connection status to FireFox / MozRepl; Beschreibung ..: Liefert den Status der Verbindung mit FireFox / MozRepl; AutoIt Version : V3.3.0.0; Syntax ........: _FFIsConnected(); Parameter(s): .:; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Sep 28 11:03:44 CEST 2009; Link ..........:; Related .......: _FFConnect, _FFDisConnect, _FFStart; Example .......: Yes; ==============================================================================Func _FFIsConnected()Local Const $sFuncName = "_FFIsConnected"If __FFIsSocket($_FF_GLOBAL_SOCKET) And _FFCmd("FFau3 != null?1:0") = 1 Then Return 1SetError(__FFError($sFuncName, $_FF_ERROR_SocketError, $_FF_GLOBAL_SOCKET))Return 0EndFunc ;==>_FFIsConnected; #FUNCTION# ===================================================================; Name ..........: _FFFormCheckBox; Description ...: Checks or unchecks a CheckBox in a form.; Beschreibung ..: Wählt eine Checkbox an oder ab.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFormCheckBox($vBox[, $bChecked = True[, $iBoxNameIndex = 0[, $sBoxMode = "index"[, $vForm = 0[, $sFormMode = "index"[, $bCheckBox = True]]]]]]); Parameter(s): .: $vBox - Index name, id or value of the CheckBox; $bChecked - Optional: (Default = True) :; | True; | False; $iBoxNameIndex - Optional: (Default = 0) : Index if $sBoxMode = "name"; $sBoxMode - Optional: (Default = "index") :; | index; | name; | id; | value; $vForm - Optional: (Default = 0) : Index, name or id of the Form; $sFormMode - Optional: (Default = "index") :; | index; | name; | id; | action; | title; $bCheckBox - Optional: (Default = True) : Internal use if the function should work for RadioButtons; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Nov 06 18:10:36 CET 2009; Link ..........:; Related .......: _FFFormOptionSelect, _FFFormRadioButton, _FFFormReset, _FFFormSubmit; Example .......: Yes; ==============================================================================Func _FFFormCheckBox($vBox, $bChecked = True, $iBoxNameIndex = 0, $sBoxMode = "index", $vForm = 0, $sFormMode = "index", $bCheckBox = True)Local Const $sFuncName = "_FFFormCheckBox"; Default parameters;If $bChecked = Default Then $bChecked = trueIf $iBoxNameIndex = Default Then $iBoxNameIndex = 0If $sBoxMode = Default Then $sBoxMode = "index"If $vForm = Default Then $vForm = 0If $sFormMode = Default Then $sFormMode = "index"Local $sTypeIf $bCheckBox Then $sType = "checkbox"Else $sType = "radio"EndIf$sBoxMode = StringLower($sBoxMode)$sFormMode = StringLower($sFormMode)If Not IsBool($bChecked) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $bChecked: " & $bChecked)) Return 0EndIfLocal $sCommand = "checked=" & __FFB2S($bChecked)Local $sForm, $sCheckBoxSwitch $sFormMode Case "index" If Not IsInt($vForm) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf $sForm = $vForm + 1 Case "id", "name", "action", "title" $sForm = StringFormat("@%s='%s'", $sFormMode, $vForm) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sFormMode: " & $sFormMode)) Return 0EndSwitchSwitch $sBoxMode Case "index" If Not IsInt($vBox) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vBox: " & $vBox)) Return 0 EndIf $sCheckBox = "position()=" & $vBox + 1 Case "name" If Not IsInt($iBoxNameIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iBoxNameIndex: " & $iBoxNameIndex)) Return 0 EndIf $sCheckBox = StringFormat("@name='%s' and position()=%i", $vBox, $iBoxNameIndex + 1) Case "id", "value" $sCheckBox = StringFormat("@%s='%s'", $sBoxMode, $vBox) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id|value) $sBoxMode: " & $sBoxMode)) Return 0EndSwitch_FFXPath(StringFormat("//form[%s]//input[@type='%s' and %s]", $sForm, $sType, $sCheckBox), $sCommand, 9)If Not @error Then Return 1Else SetError(@error) Return 0EndIfEndFunc ;==>_FFFormCheckBox; #FUNCTION# ===================================================================; Name ..........: _FFFormGetElementsLength; Description ...: Length of the form elements; Beschreibung ..: Gibt die Anzahl der Elemente eines Formulars zurĂźck.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFormGetElementsLength([$vForm = 0[, $sMode = "index"]]); Parameter(s): .: $vForm - Optional: (Default = 0) : Index (0-n), name or id; $sMode - Optional: (Default = "index") :; | index; | name; | id; | action; | title; Return Value ..: Success - >0; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Nov 06 22:04:28 CET 2009; Link ..........:; Related .......: _FFGetLength; Example .......: Yes; ==============================================================================Func _FFFormGetElementsLength($vForm = 0, $sMode = "index")Local Const $sFuncName = "_FFFormGetElementsLength"If $vForm = Default Then $vForm = 0If $sMode = Default Then $sMode = "index"$sMode = StringLower($sMode)Local $sFormSwitch $sMode Case "index" If IsInt($vForm) Then $sForm = $vForm + 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf Case "name", "id", "action", "title" $sForm = "@" & $sMode & "='" & $vForm & "'" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id|action|title) $sMode: " & $sMode)) Return 0EndSwitchLocal $bTrace = $_FF_COM_TRACE$_FF_COM_TRACE = False_FFXPath(StringFormat("//form[%s]", $sForm), "", 9)Local $sRet = _FFCmd("FFau3.xpath.elements.length")If Not @error Then $_FF_COM_TRACE = $bTrace Return $sRetElse $_FF_COM_TRACE = $bTrace SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vForm: " & $vForm)) Return 0EndIfEndFunc ;==>_FFFormGetElementsLength; #FUNCTION# ===================================================================; Name ..........: _FFFormOptionSelect; Description ...: Selects an element of an OptionSelect.; Beschreibung ..: Wählt ein Element eines OptionSelect aus.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFormOptionSelect([$vElement = 0[, $sElementMode = "index"[, $vOption = 0[, $sOptionMode = "index"[, $vForm = 0[, $sFormMode = "index"]]]]]]); Parameter(s): .: $vElement - Optional: (Default = 0) : index (0-n), name, id; $sElementMode - Optional: (Default = "index") :; | index; | name; | id; $vOption - Optional: (Default = 0) : index (0-n), name, id, text, value; $sOptionMode - Optional: (Default = "index") :; | index; | name; | id; | text; | value; $vForm - Optional: (Default = 0) : index (0-n), name, id; $sFormMode - Optional: (Default = "index") :; | index; | name; | id; | action; | title; Return Value ..: Success - 1; Failure - 0 and sets; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Thu Feb 04 19:13:58 CET 2010; Link ..........:; Related .......: _FFFormCheckBox, _FFFormRadioButton, _FFFormReset, _FFFormSubmit; Example .......: Yes; ==============================================================================Func _FFFormOptionSelect($vElement = 0, $sElementMode = "index", $vOption = 0, $sOptionMode = "index", $vForm = 0, $sFormMode = "index")Local Const $sFuncName = "_FFFormOptionSelect"; Default parametersIf $vElement = Default Then $vElement = 0If $sElementMode = Default Then $sElementMode = "index"If $vOption = Default Then $vOption = 0If $sOptionMode = Default Then $sOptionMode = "index"If $vForm = Default Then $vForm = 0If $sFormMode = Default Then $sFormMode = "index"Local $sForm, $sElement, $sOption$sElementMode = StringLower($sElementMode)$sOptionMode = StringLower($sOptionMode)$sFormMode = StringLower($sFormMode)Switch $sFormMode Case "index" If Not IsInt($vForm) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf $sForm = $vForm + 1 Case "id", "name", "action", "title" $sForm = StringFormat("@%s='%s'", $sFormMode, $vForm) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sFormMode: " & $sFormMode)) Return 0EndSwitchSwitch $sElementMode Case "index" If Not IsInt($vElement) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vElement: " & $vElement)) Return 0 EndIf $sElement = "position()=" & $vElement + 1 Case "id", "name" $sElement = StringFormat("@%s='%s'", $sElementMode, $vElement) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sElementMode: " & $sElementMode)) Return 0EndSwitchSwitch $sOptionMode Case "index" If Not IsInt($vOption) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vOption: " & $vOption)) Return 0 EndIf $sOption = "position()=" & $vOption + 1 Case "text" $sOption = StringFormat("contains(.,'%s')", $vOption) Case "name", "id", "value" $sOption = StringFormat("@%s='%s'", $sOptionMode, $vOption) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|text|name|id|value) $sOptionMode: " & $sOptionMode)) Return 0EndSwitchLocal $sCommand = StringFormat("//form[%s]//select[%s]//option[%s]", $sForm, $sElement, $sOption)_FFXPath($sCommand, "selected=true", 9)If Not @error Then Return 1Else SetError(@error) Return 0EndIfEndFunc ;==>_FFFormOptionSelect; #FUNCTION# ===================================================================; Name ..........: _FFFormRadioButton; Description ...: Selects a RadioButton in a form; Beschreibung ..: Wählt einen RadioButton aus.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFormRadioButton($vRadioButton[, $iRadioButtonIndex = 0[, $sRadioButtonMode = "index"[, $vForm = 0[, $sFormMode = "index"]]]]); Parameter(s): .: $vRadioButton - name, id or value; $iRadioButtonIndex - Optional: (Default = 0) : RadioButton index (0-n); $sRadioButtonMode - Optional: (Default = "index") : RadioButton; | index; | name; | id; | value; $vForm - Optional: (Default = 0) : Form index or name; $sFormMode - Optional: (Default = "index") :; | index; | name; Return Value ..: Success - RadioButton state 1 or 0; Failure - -1; Author(s) .....: Thorsten Willert; Date ..........: Wed Mar 25 09:22:11 CET 2009 @390 /Internet Time/; Link ..........:; Related .......: _FFFormCheckBox, _FFFormOptionSelect, _FFFormReset, _FFFormSubmit; Example .......: Yes; ==============================================================================Func _FFFormRadioButton($vRadioButton, $iRadioButtonIndex = 0, $sRadioButtonMode = "index", $vForm = 0, $sFormMode = "index");Local Const $sFuncName = "_FFFormRadioButton"Local $RetVal = _FFFormCheckBox($vRadioButton, True, $iRadioButtonIndex, $sRadioButtonMode, $vForm, $sFormMode, False)SetError(@error)Return $RetValEndFunc ;==>_FFFormRadioButton; #FUNCTION# ===================================================================; Name ..........: _FFFormReset; Description ...: Resets a form; Beschreibung ..: Setzt ein Formular zurĂźck.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFormReset([$vForm = 0[, $sMode = "index"]]); Parameter(s): .: $vForm - Optional: (Default = 0) : Index (0-n), name, id; $sMode - Optional: (Default = "index") :; | Index; | name; | id; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Sep 18 06:01:42 CEST 2009 @209 /Internet Time/; Link ..........:; Related .......: _FFFormCheckBox, _FFFormOptionSelect, _FFFormSubmit, _FFFormRadioButton; Example .......: Yes; ==============================================================================Func _FFFormReset($vForm = 0, $sMode = "index")Local Const $sFuncName = "_FFFormReset"Local $sCommandSwitch StringLower($sMode) Case "index" If Not IsInt($vForm) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf $sCommand = '.forms[' & $vForm & ']' Case "id" $sCommand = '.getElementById("' & $vForm & '")' Case "name" $sCommand = '.getElementsByName("' & $vForm & '")[0]' Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|id|name) $sMode: " & $sMode)) Return 0EndSwitchLocal $sRetVal = _FFCmd($sCommand & ".reset();")If Not @error And $sRetVal <> "_FFCmd_Err" Then Return 1SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vForm: " & $vForm))Return 0EndFunc ;==>_FFFormReset; #FUNCTION# ===================================================================; Name ..........: _FFFormSubmit; Description ...: Submits a form; Beschreibung ..: Sendet ein Formular ab.; AutoIt Version : V3.3.0.0; Syntax ........: _FFFormSubmit([$vForm = 0[, $sMode = "index"[, $sSubmitMode = "submit"[, $bLoadWait = True]]]]); Parameter(s): .: $vForm - Optional: (Default = 0) : Index-number, name or id; $sSubmitMode - Optional: (Default = "auto") :; | auto; | click; | submit; | keydown; | keypress; $bLoadWait - Optional: (Default = true) :; | True; | False; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Tue Apr 07 17:56:46 CEST 2009 @706 /Internet Time/; Link ..........:; Related .......: _FFFormCheckBox, _FFFormOptionSelect, _FFFormReset, _FFFormRadioButton; Example .......: Yes; ==============================================================================Func _FFFormSubmit($vForm = 0, $sMode = "index", $sSubmitMode = "submit", $bLoadWait = True)Local Const $sFuncName = "_FFFormSubmit"Local $sRetValLocal $iSubmit = -1, $iPassword = -1Local $bTrace$sMode = StringLower($sMode)If $sMode = "index" Then If IsInt($vForm) Then $vForm = 'forms[' & $vForm & ']' Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIfElseIf $sMode = "id" Then $vForm = "getElementById('" & $vForm & "')"ElseIf $sMode = "name" Then $vForm = "getElementsByName('" & $vForm & "')[0]"Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|id|name) $sMode: " & $sMode)) Return 0EndIfLocal $iLength = _FFCmd(StringFormat('.%s.elements.length;', $vForm))If $iLength = "_FFCmd_Err" Then SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "No Elements found in form: " & $vForm)) Return 0EndIf$bTrace = $_FF_COM_TRACE$_FF_COM_TRACE = FalseIf $iLength > 0 And ($sSubmitMode = "keypress" Or $sSubmitMode = "keydown" Or $sSubmitMode = "click" Or $sSubmitMode = "auto") Then For $i = 0 To $iLength - 1 $sRetVal = _FFCmd(StringFormat('.%s.elements[%i].type;', $vForm, $i)) If @error Then Return 0 If $sRetVal = "submit" Then $iSubmit = $i If $sRetVal = "password" Then $iPassword = $i If $iSubmit > -1 And $iPassword > -1 Then ExitLoop NextEndIf$_FF_COM_TRACE = $bTraceSwitch StringLower($sSubmitMode) Case "auto" ContinueCase Case "keypress" ; fire "enter" with keypress on the password element _FFDispatchEvent(StringFormat('.%s.elements[%i]', $vForm, $iPassword), "keypress", 13) If Not @error Then If $bLoadWait Then If Not _FFLoadWait() Then Return 0 EndIf Return 1 Else If $sSubmitMode = "auto" Then ContinueCase EndIf Case "click" ; clicks on the submit element $sRetVal = _FFCmd(StringFormat('.%s.elements[%i].click();', $vForm, $iSubmit), 3000) If Not @error And $sRetVal <> "_FFCmd_Err" Then If $bLoadWait Then If Not _FFLoadWait() And $sSubmitMode = "auto" Then ContinueCase EndIf Return 1 Else If $sSubmitMode = "auto" Then ContinueCase EndIf Case "submit" ; use form.submit() $sRetVal = _FFCmd(StringFormat('.%s.submit();', $vForm)) If Not @error And $sRetVal <> "_FFCmd_Err" Then If $bLoadWait Then If Not _FFLoadWait() And $sSubmitMode = "auto" Then ContinueCase EndIf Return 1 Else If $sSubmitMode = "auto" Then ContinueCase EndIf Case "keydown" ; fire "enter" with keydown on the password element _FFDispatchEvent(StringFormat(".%s.elements[%i]", $vForm, $iPassword), "keydown", 13) If Not @error Then If $bLoadWait Then If Not _FFLoadWait() And $sSubmitMode = "auto" Then ContinueCase EndIf Return 1 EndIf Case Else Return 0EndSwitchReturn 0EndFunc ;==>_FFFormSubmit; #FUNCTION# ===================================================================; Name ..........: _FFGetValue; Description ...: Gets an value of an element; Beschreibung ..: Liefert das Value eines Elements; AutoIt Version : V3.3.0.0; Syntax ........: _FFGetValue($sElement[, $sMode = "elements"[, $iIndex = 0[, $iFilter = 0]]]); Parameter(s): .: $sElement -; $sMode - Optional: (Default = "elements") :; | elements: element or object from _FFXpath or _FFObj*; | id; | name; | class; | tag; $iIndex - Optional: (Default = 0) : index if $sMode = class, name, tag; $iFilter - Optional: (Default = 0) : you can add them:; | 0 = No filter; | 1 = Remove all non ASCII; | 2 = Remove all double withespaces; | 4 = Remove all double linefeeds; | 8 = Remove all HTML-tags; | 16 = simple html-tag / entities convertor; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Wed Sep 23 22:55:36 CEST 2009; Link ..........:; Related .......: _FFSetValue, _FFXPath; Example .......: Yes; ==============================================================================Func _FFGetValue($sElement, $sMode = "elements", $iIndex = 0, $iFilter = 0)Local Const $sFuncName = "_FFGetValue"If Not IsInt($iIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex)) Return 0EndIfIf Not IsInt($iFilter) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iFilter: " & $iFilter)) Return 0EndIfSwitch StringLower($sMode) Case "elements" If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Case "id" $sElement = ".getElementById('" & $sElement & "')" Case "name" $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode)) Return 0EndSwitchIf StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElementLocal $sRetVal = _FFCmd($sElement & ".value")If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then __FFFilterString($sRetVal, $iFilter) Return $sRetValElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement)) Return 0EndIfEndFunc ;==>_FFGetValue; #FUNCTION# ===================================================================; Name ..........: _FFDispatchEvent; Description ...: Simulates a HTML event; Beschreibung ..: Simuliert ein HTML-Ereignis an einem Element.; AutoIt Version : V3.3.0.0; Syntax ........: _FFDispatchEvent($sElement[, $sEventType = "change"[, $iKeyCode = 13]]); Parameter(s): .: $sElement - Element where the event is fired (or object from _FFXpath/_FFObj*); $sEventType - Optional: (Default = "change") :; | change; | select; | focus; | blur; | resize; | keydown; | keypress; | keyup; $iKeyCode - ASCII-KeyCode (decimal); Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Dec 04 15:06:11 CET 2009; Link ..........: http://www.w3.org/TR...nts/events.html; Related .......:; Example .......: Yes; ==============================================================================Func _FFDispatchEvent($sElement, $sEventType = "change", $iKeyCode = 13)Local Const $sFuncName = "_FFDispatchEvent"If $iKeyCode < 0 Or $iKeyCode > 255 Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(int) $iKeyCode: 0-255" & $iKeyCode)) Return 0EndIfLocal $sType$sEventType = StringLower($sEventType)If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8)Switch $sEventType Case "change", "select", "focus", "blur", "resize" $sType = "Event" Case "keydown", "keypress", "keyup" $sType = "KeyboardEvent" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(change|select|focus|blur|resize|keydown|keypress|keyup) $sEventType: " & $sEventType)) Return 0EndSwitchIf StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElementLocal $RetVal = _FFCmd(StringFormat("FFau3.simulateEvent(%s,'%s','%s',%s);", $sElement, $sType, $sEventType, $iKeyCode))If Not @error And $RetVal <> "_FFCmd_Err" Then Return $RetValElse SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sElement: " & $sElement)) Return 0EndIfReturn 0EndFunc ;==>_FFDispatchEvent; #FUNCTION# ===================================================================; Name ..........: _FFLoadWait; Description ...: Wait while the page is loading.; Beschreibung ..: Wartet bis die Seite geladen ist.; AutoIt Version : V3.3.0.0; Syntax ........: _FFLoadWait([$iTimeOut = $_FF_LOADWAIT_TIMEOUT[, $bStop = $_FF_LOADWAIT_STOP]]); Parameter(s): .: $iTimeOut - Optional: (Default = $_FF_LOADWAIT_TIMEOUT) : Timeout while waiting in ms; $bStop - Optional: (Default = $_FF_LOADWAIT_STOP) : Stops loading after TimeOut; Return Value ..: Success - 1; @EXTENDED - loading time in ms; Failure - 0; @ERROR -; @EXTENDED - loading time in ms; Author(s) .....: Thorsten Willert; Date ..........: Thu Feb 04 19:20:36 CET 2010; Link ..........: https://developer.mo.../nsIWebProgress; Related .......: _FFDialogWait; Example .......: Yes; ==============================================================================Func _FFLoadWait($iTimeOut = $_FF_LOADWAIT_TIMEOUT, $bStop = $_FF_LOADWAIT_STOP)Local Const $sFuncName = "_FFLoadWait"Local $iLoadingTime = 0If $iTimeOut < 1000 Then $iTimeOut = 1000Local $bTrace = $_FF_COM_TRACE$_FF_COM_TRACE = FalseIf Not $_FF_COM_TRACE Then ConsoleWrite("_FFLoadWait: ")Local $TimeOutTimer = TimerInit()While TimerDiff($TimeOutTimer) < $iTimeOut If Not $_FF_COM_TRACE Then ConsoleWrite(".") If _FFCmd("FFau3.tmp=window.getBrowser().webProgress;FFau3.tmp.isLoadingDocument && FFau3.tmp.busyFlags ? false: true;") Then $iLoadingTime = Round(TimerDiff($TimeOutTimer)) ConsoleWrite(" loaded in " & $iLoadingTime & "ms" & @CRLF) Sleep($_FF_CON_DELAY * 1.4) $_FF_COM_TRACE = $bTrace Return SetError(0, $iLoadingTime - $_FF_CON_DELAY * 1.4, 1) EndIf Sleep(250)WEndIf $bStop Then _FFAction("stop")$_FF_COM_TRACE = $bTraceConsoleWrite(@CRLF & @CRLF)Return SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Can not check site status."), $iLoadingTime, 0)EndFunc ;==>_FFLoadWait; #FUNCTION# ===================================================================; Name ..........: _FFGetObjectInfo; Description ...: Returns a 2-dimensional array with every information of an object.; Beschreibung ..: Liefert ein 2-dimensionales Array mit allen Informationen Ăźber ein Objekt.; AutoIt Version : V3.3.0.0; Syntax ........: _FFGetObjectInfo([$sObject = "window"]); Parameter(s): .: $sObject - Optional: (Default = "window") :; Return Value ..: Success - Array with object information; Failure -; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 23:05:55 CET 2009 @962 /Internet Time/; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFGetObjectInfo($sObject = "window")Local Const $sFuncName = "_FFGetObjectInfo"Local $aRet[1][2], $aTmpIf StringLeft($sObject, 1) = "." Then $sObject = "window.content.document" & $sObjectLocal $aInfo = StringSplit(_FFCmd("repl.inspect(" & $sObject & ");"), @CRLF, 2)If Not @error And IsArray($aInfo) And $aInfo <> "_FFCmd_Err" Then ReDim $aRet[uBound($aInfo)][2] For $i = 0 To UBound($aInfo) - 1 $aTmp = StringRegExp($aInfo[$i], "<object>.(.*?)=(.*?)$", 3) If Not @error And IsArray($aTmp) Then $aRet[$i][0] = $aTmp[0] $aRet[$i][1] = $aTmp[1] EndIf Next Return $aRetElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, $sObject)) Return $aRet[0][0] = 0EndIfEndFunc ;==>_FFGetObjectInfo; #FUNCTION# ===================================================================; Name ..........: _FFGetPosition; Description ...: Returns an array with the position of an element and/or the position and size of the FireFox content area, relative to the client area of the window; Beschreibung ..: Liefert ein Array mit der Position eines Elementes und/oder die Position und GrĂśĂ?e des FireFox-Inhalts, relativ zur Client Area des Fensters; AutoIt Version : V3.3.0.0; Syntax ........: _FFGetPosition([$sElement = ""]); Parameter(s): .: $sElement - Optional: (Default = "") : Element or FFau3 - object.; An empty string returns only the position and size of the content area; Return Value ..: Success - array with the position and sizes; | [0] = X position of the element (relative to the document); | [1] = Y position of the element (relative to the document); | [2] = X position of the content area (relative to the window client); | [3] = Y position of the content area (relative to the window client); | [4] = width of the content area; | [6] = height of the content area; Failure -; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Thu Feb 04 18:49:07 CET 2010; Link ..........: https://developer.mo...MSAA/FindWindow; Related .......:; Example .......: Yes; ==============================================================================Func _FFGetPosition($sElement = "")Local Const $sFuncName = "_FFGetPosition"Local $aElement[2] = [-1, -1]If StringLeft(_FFCmd(".location.href"), 7) = "chrome:" Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Can't get position from chrome-address")) ReturnEndIfIf $sElement <> "" Then If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) If StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElement Local $sPos = _FFCmd("FFau3.findPos(" & $sElement & ")") If $sPos <> "_FFCmd_Err" Then $aElement = StringSplit($sPos, ' ', 2) Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement not found: " & $sElement)) Return EndIfEndIfLocal $aContent = ControlGetPos(_FFCmd(".title"), "", "[CLASS:MozillaContentWindowClass]")If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "Cant find 'MozillaContentWindowClass'-control " & @error)) Local $aContent[4] = [-1, -1, -1, -1]EndIfLocal $aRet[6] = [$aElement[0], $aElement[1], $aContent[0], $aContent[1], $aContent[2], $aContent[3]]Return $aRetEndFunc ;==>_FFGetPosition; #FUNCTION# ===================================================================; Name ..........: _FFOpenURL; Description ...: Opens a new URL; Beschreibung ..: Ă?ffnet eine URL.; AutoIt Version : V3.3.0.0; Syntax ........: _FFOpenURL($sURL[, $bLoadWait = True]); Parameter(s): .: $sURL - URL or chrome (shortcut); $bLoadWait - Optional: (Default = True) :; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Tue Feb 16 12:49:03 CET 2010; Link ..........:; Related .......: _FFTabAdd; Example .......: Yes; ==============================================================================Func _FFOpenURL($sURL, $bLoadWait = True)Local Const $sFuncName = "_FFOpenURL"If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0EndIfIf StringLeft($sURL, 7) = "chrome:" Then $sURL = __FFChromeSelect(StringMid($sURL, 8))ConsoleWrite("_FFOpenURL: " & $sURL & @CRLF)Local $sRetVal = _FFCmd(StringFormat(".location.href='%s'", $sURL))If Not @error And $sRetVal = $sURL Then If $bLoadWait Then $sRetVal = _FFLoadWait() Else $sRetVal = 1 EndIf $_FF_FRAME = 'top' _FFCmd("FFau3.WCD=window.content.top.document;") Return $sRetValElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, $sURL)) Return 0EndIfEndFunc ;==>_FFOpenURL; #FUNCTION# ===================================================================; Name ..........: _FFPrefReset; Description ...: Resets a config entry; Beschreibung ..: Setzt einen Eintrag in der Config zurĂźck; Syntax ........: _FFPrefReset($sName); Parameter(s): .: $sName - Name of the config entry; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Modified ......: Wed Mar 25 18:06:53 CET 2009 @754 /Internet Time/; Link ..........: https://developer.mo...n/nsIPrefBranch, http://kb.mozillazin...:config_entries; Related .......: _FFPrefSet, _FFPrefGet; Example .......: Yes; ==============================================================================Func _FFPrefReset($sName)Local Const $sFuncName = "_FFPrefReset"Local $iType = _FFCmd('FFau3.obj=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);FFau3.obj.getPrefType("' & $sName & '");')If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sName: " & $sName)) Return 0EndIfIf $iType <> 0 Then If Not _FFCmd('FFau3.obj.prefHasUserValue("' & $sName & '");') Then Return 1 _FFCmd('FFau3.obj.clearUserPref("' & $sName & '");') If Not @error Then Return 1Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sName: " & $sName))EndIfReturn 0EndFunc ;==>_FFPrefReset; #FUNCTION# ===================================================================; Name ..........: _FFPrefGet; Description ...: Gets a config entry; Beschreibung ..: LieĂ?t einen Wert aus der Config aus; Syntax ........: _FFPrefGet($sName); Parameter(s): .: $sName - Name of the config entry; Return Value ..: Success - Value of the entry; Failure - 0 and sets @error; @ERROR -; Author(s) .....: Thorsten Willert; Modified ......: Wed Mar 25 18:06:59 CET 2009 @754 /Internet Time/; Link ..........: https://developer.mo...n/nsIPrefBranch, http://kb.mozillazin...:config_entries; Related .......: _FFPrefSet, _FFPrefReset; Example .......: Yes; ==============================================================================Func _FFPrefGet($sName)Local Const $sFuncName = "_FFPrefGet"Local $sCommandLocal $iType = _FFCmd('FFau3.obj=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); FFau3.obj.getPrefType("' & $sName & '");')If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, $sName)) Return 0EndIfSwitch $iType Case 0 SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sName: " & $sName)) Return 0 Case 32 ; PREF_STRING $sCommand = "getCharPref" Case 64 ; PREF_INT $sCommand = "getIntPref" Case 128 ; PREF_BOOL $sCommand = "getBoolPref"EndSwitch$sCommand = StringFormat('FFau3.obj.%s("%s");', $sCommand, $sName)Return _FFCmd($sCommand)EndFunc ;==>_FFPrefGet; #FUNCTION# ===================================================================; Name ..........: _FFPrefSet; Description ...: Sets a config entry; Beschreibung ..: Setzt einen Wert in der Config.; Syntax ........: _FFPrefSet($sName, $vValue); Parameter(s): .: $sName - Name of the config entry; $vValue - Value of the config entry; Return Value ..: Success - 1 and sets @EXTENDED; Failure - 0; @ERROR -; @EXTENDED - Old value; Author(s) .....: Thorsten Willert; Modified ......: Wed Mar 25 18:07:07 CET 2009 @754 /Internet Time/; Link ..........: https://developer.mo...n/nsIPrefBranch, http://kb.mozillazin...:config_entries; Related .......: _FFPrefGet, _FFPrefReset; Example .......: Yes; ==============================================================================Func _FFPrefSet($sName, $vValue)Local Const $sFuncName = "_FFPrefSet"Local $sCommandLocal $iType = _FFCmd('FFau3.obj=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);FFau3.obj.getPrefType("' & $sName & '");')If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, $sName)) Return 0EndIfLocal $vOldValue = _FFPrefGet($sName)Switch $iType Case 0 SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sName: " & $sName)) Return 0 Case 32 ; PREF_STRING If Not IsString($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(string) $vValue: " & $vValue)) Return 0 EndIf $sCommand = StringFormat('FFau3.obj.%s("%s","%s");', "setCharPref", $sName, $vValue) Case 64 ; PREF_INT If Not IsInt($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vValue: " & $vValue)) Return 0 EndIf $sCommand = StringFormat('FFau3.obj.%s("%s",%s);', "setIntPref", $sName, $vValue) Case 128 ; PREF_BOOL If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $sCommand = StringFormat('FFau3.obj.%s("%s",%s);', "setBoolPref", $sName, __FFB2S($vValue))EndSwitch_FFCmd($sCommand)If Not @error Then Local $vRetVal = _FFPrefGet($sName) If Not @error And $vRetVal = $vValue Then SetExtended($vOldValue) Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, "$vValue <> " & $vRetVal)) Return 0 EndIfEndIfReturn 0EndFunc ;==>_FFPrefSet; #FUNCTION# ===================================================================; Name ..........: _FFQuit; Description ...: Quits FireFox; Beschreibung ..: SchlieĂ?t FireFox; AutoIt Version : V3.3.0.0; Syntax ........: _FFQuit(); Parameter(s): .:; Return Value ..: Success - 1 / $_FF_GLOBAL_SOCKET = -1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Sat Mar 14 14:44:55 CET 2009 @614 /Internet Time/; Link ..........:; Related .......: _FFDisConnect; Example .......: Yes; ==============================================================================Func _FFQuit()Local Const $sFuncName = "_FFQuit"If $_FF_GLOBAL_SOCKET = -1 Then ReturnIf Not __FFIsSocket($_FF_GLOBAL_SOCKET) Then SetError(__FFError($sFuncName, $_FF_ERROR_SocketError)) Return 0EndIfTCPSend($_FF_GLOBAL_SOCKET, "close()" & @CRLF)If Not @error Then $_FF_FRAME = "top" $_FF_GLOBAL_SOCKET = -1 If $_FF_COM_TRACE Then ConsoleWrite('__FFQuit: Closing FireFox ...' & @CRLF) Return 1Else Return 0EndIfEndFunc ;==>_FFQuit; #FUNCTION# ===================================================================; Name ..........: _FFReadHTML; Description ...: Returns the HTML-source code of a page.; Beschreibung ..: Liefert den HTMl-Quellcode einer Seite.; AutoIt Version : V3.3.0.0; Syntax ........: _FFReadHTML([$sMode = "body"[, $iFilter = 0]]); Parameter(s): .: $sMode - Optional: (Default = "body") :; | body = innerHTML from <body>; | html = innerHTML from <html>; $iFilter - Optional: (Default = 0) : you can add them:; | 0 = No filter; | 1 = Remove all non ASCII; | 2 = Remove all double withespaces; | 4 = Remove all double linefeeds; | 8 = Remove all HTML-tags; | 16 = simple html-tag / entities convertor; Return Value ..: Success - String with the HTML-source code; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:55:56 CET 2009 @955 /Internet Time/; Link ..........:; Related .......: _FFReadText, _FFXPath; Example .......: Yes; ==============================================================================Func _FFReadHTML($sMode = "body", $iFilter = 0)Local Const $sFuncName = "_FFReadHTML"Local $sCommandSwitch StringLower($sMode) Case "body" $sCommand = ".body" Case "html" $sCommand = ".documentElement" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(body|html) $sMode: " & $sMode)) Return 0EndSwitchLocal $sRetVal = _FFCmd($sCommand & ".innerHTML;", 10000)If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then $sRetVal = __FFFilterString($sRetVal, $iFilter) Return $sRetValElse SetError(1) Return ""EndIfEndFunc ;==>_FFReadHTML; #FUNCTION# ===================================================================; Name ..........: _FFReadText; Description ...: Returns the text of a page.; Beschreibung ..: Liefert den Text einer Seite.; AutoIt Version : V3.3.0.0; Syntax ........: _FFReadText([$iFilter = 0]); Parameter(s): .: $iFilter - Optional: (Default = 0) : you can add them:; | 0 = No filter; | 1 = Remove all non ASCII; | 2 = Remove all double withespaces; | 4 = Remove all double linefeeds; | 8 = Remove all HTML-tags; | 16 = simple html-tag / entities convertor; Return Value ..: Success - String; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:55:05 CET 2009 @954 /Internet Time/; Link ..........:; Related .......: _FFReadHTML, _FFXPath; Example .......: Yes; ==============================================================================Func _FFReadText($iFilter = 0);Local Const $sFuncName = "_FFReadText"Local $sRetVal = _FFCmd(".documentElement.textContent;", 10000)If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then $sRetVal = __FFFilterString($sRetVal, $iFilter) Return $sRetValElse SetError(1) Return ""EndIfEndFunc ;==>_FFReadText; #FUNCTION# ===================================================================; Name ..........: _FFSearch; Description ...: Searches a string; Beschreibung ..: Sucht einen Text.; AutoIt Version : V3.3.0.0; Syntax ........: _FFSearch($sSearchString[, $bCaseSensitive = False[, $bBackwards = False[, $bWrapAround = True[, $bWholeWord = False[, $bSearchInFrames = True]]]]]); Parameter(s): .: $sSearchString - String to search; $bCaseSensitive - Optional: (Default = false) :; $bBackwards - Optional: (Default = false) :; $bWrapAround - Optional: (Default = true) :; $bWholeWord - Optional: (Default = false) :; $bSearchInFrames - Optional: (Default = true) :; Return Value ..: Success - 1; Failure - 0 and sets; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Thu Dec 03 20:53:30 CET 2009; Link ..........:; Related .......: _FFAction; Example .......: Yes; ==============================================================================Func _FFSearch($sSearchString, $bCaseSensitive = False, $bBackwards = False, $bWrapAround = True, $bWholeWord = False, $bSearchInFrames = True)Local Const $sFuncName = "_FFSearch"If $sSearchString = "" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Empty String $sSearchString")) Return ""EndIfIf $bCaseSensitive = Default Then $bCaseSensitive = FalseIf $bBackwards = Default Then $bBackwards = FalseIf $bWrapAround = Default Then $bWrapAround = TrueIf $bWholeWord = Default Then $bWholeWord = FalseIf $bSearchInFrames = Default Then $bSearchInFrames = TrueLocal $sCommand = 'content.find("' & __FFValue2JavaScript($sSearchString) & '", ' & _ __FFB2S($bCaseSensitive) & ', ' & _ __FFB2S($bBackwards) & ', ' & _ __FFB2S($bWrapAround) & ', ' & _ __FFB2S($bWholeWord) & ', ' & _ __FFB2S($bSearchInFrames) & ', false);'Local $RetVal = _FFCmd($sCommand)If Not @error And $RetVal <> "_FFCmd_Err" Then Return 1Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sSearchString: " & $sSearchString)) Return 0EndIfEndFunc ;==>_FFSearch; #FUNCTION# ===================================================================; Name ..........: _FFCmd; Description ...: Send and receive data from Firefox.; Beschreibung ..: Sendet und empfängt Daten von FireFox.; AutoIt Version : V3.3.0.0; Syntax ........: _FFCmd($sArg[, $iTimeOut = 30000[, $bTry = True[, $bRec = True]]]); Parameter(s): .: $sArg - Any JavaScript; $iTimeOut - Optional: (Default = 30000) :; $bTry - Optional: (Default = True) : adds try/catch to $sArg; $bRec - Optional: (Default = True) : record command; Return Value ..: Success - String; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Sep 18 06:03:57 CEST 2009 @211 /Internet Time/; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFCmd($sArg, $iTimeOut = 30000, $bTry = True)Local Const $sFuncName = "_FFCmd"Local $sRetIf StringLeft($sArg, 1) = "." Then $sArg = "window.content.document" & $sArgIf $bTry And Not StringInStr(StringLower($sArg), "try") Then $sArg = "try{" & $sArg & "}catch(e){'_FFCmd_Err';};"Local $sArgWrapped = StringReplace($sArg, "window.content.document", "window.content.wrappedJSObject.document")$sArg = StringReplace($sArg, "window.content.document", "window.content." & $_FF_FRAME & ".document")$sArgWrapped = StringReplace($sArgWrapped, "window.content.wrappedJSObject.document", "window.content.wrappedJSObject." & $_FF_FRAME & ".document")If (Not StringInStr($sArg, ".frames[")) Or StringInStr($sArg, "evaluate") Or (Not StringRegExp($sArg, "\.[a-zA-z]+\(.*?\)(\[.+\])?\.", 0)) Then If __FFSend($sArg) Then $sRet = __FFRecv($iTimeOut) If Not @error Or String($sRet) <> "_FFCmd_Err" Then Return $sRet ElseIf StringInStr($sArgWrapped, "wrappedJSObject") Then __FFSend($sArgWrapped) $sRet = __FFRecv($iTimeOut) If Not @error And String($sRet) <> "_FFCmd_Err" Then Return $sRet EndIf EndIfElse __FFSend($sArgWrapped) $sRet = __FFRecv($iTimeOut) If Not @error And String($sRet) <> "_FFCmd_Err" Then Return $sRetEndIfSetError(__FFError($sFuncName, $_FF_ERROR_RetValue, $sRet))Return ""EndFunc ;==>_FFCmd; #FUNCTION# ===================================================================; Name ..........: _FFSetValue; Description ...: Sets a value of an element; Beschreibung ..: Setzt den Wert (value) eines Elements; AutoIt Version : V3.3.0.0; Syntax ........: _FFSetValue($sValue, $sElement[, $sMode = "elements"[, $iIndex = 0]]); Parameter(s): .: $sElement -; $sMode - Optional: (Default = "elements") :; | elements: element or object from _FFXpath or _FFObj*; | id; | name; | class; | tag; $iIndex - Optional: (Default = 0) : index if $sMode = class, name, tag; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Wed Sep 23 22:55:36 CEST 2009; Link ..........:; Related .......: _FFSetValue, _FFXPath; Example .......: Yes; ==============================================================================Func _FFSetValue($sValue, $sElement, $sMode = "elements", $iIndex = 0)Local Const $sFuncName = "_FFSetValue"If Not IsInt($iIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex)) Return 0EndIfSwitch StringLower($sMode) Case "elements" If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Case "id" $sElement = ".getElementById('" & $sElement & "')" Case "name" $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode)) Return 0EndSwitch__FFValue2JavaScript($sValue)Local $sRetVal = _FFCmd($sElement & ".value='" & $sValue & "'")If Not @error And $sRetVal <> "_FFCmd_Err" Then Return 1Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement)) Return 0EndIfEndFunc ;==>_FFSetValue; #FUNCTION# ===================================================================; Name ..........: _FFStart; Description ...: Starts FireFox; Beschreibung ..: Startet FireFox; AutoIt Version : V3.3.0.0; Syntax ........: _FFStart([$sURL = "about:blank"[, $sProfile = "default"[, $iMode = 1[, $bHide = False[, $IP = "127.0.0.1"[, $iPort = 4242]]]]]]); Parameter(s): .: $sURL - Optional: (Default = "about:blank") : Start URL; $sProfile - Optional: (Default = "default") : User profile; $iMode - Optional: (Default = 1) : Start mode:; | 0 = Connect to existing process; | 1 = Start new process; | 2 = Connect to an existing process, on failure start a new process; | +8 = Starting FF with parameter -no-remote; $bHide - Optional: (Default = False) : Start in hidden mode; $IP - Optional: (Default = "127.0.0.1") : IP of MozRepl; $iPort - Optional: (Default = 4242) : Port number of MozRepl; Return Value ..: Success - 1; @EXTENDED - PID; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Thu Apr 30 22:10:07 CEST 2009; Link ..........:; Related .......: _FFQuit, _FFConnect, _FFDisConnect, _FFIsConnected; Example .......: Yes; ==============================================================================Func _FFStart($sURL = "about:blank", $sProfile = "default", $iMode = 1, $bHide = False, $IP = "127.0.0.1", $iPort = 4242)Local Const $sFuncName = "_FFStart"; Default parametersIf $sURL = Default Then $sURL = "about:blank"If $IP = Default Then $IP = "127.0.0.1"If $iPort = Default Then $iPort = 4242If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0EndIfIf Not __FFIsIP($IP) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(IP) $IP: " & $IP)) Return 0EndIfIf Not __FFIsPort($iPort) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(PORT) $iPort: " & $iPort)) Return 0EndIf; Default parametersIf $sProfile = Default Then $sProfile = "default"If $iMode = Default Then $iMode = 1If $bHide = Default Then $bHide = FalseLocal $PID = -1, $bNoRemote = FalseIf $iMode >= 8 Then $iMode -= 8 $bNoRemote = TrueEndIfSwitch $iMode Case 2 ContinueCase Case 0 If ProcessExists($_FF_PROC_NAME) Then _FFConnect($IP, $iPort) If $_FF_GLOBAL_SOCKET > -1 Then _FFOpenURL($sURL) ElseIf $iMode = 2 Then ContinueCase EndIf Case 1 __FFStartProcess($sURL, True, $sProfile, $bNoRemote, $bHide, $iPort) $PID = @extended If ProcessExists($_FF_PROC_NAME) Then _FFConnect($IP, $iPort) If $_FF_GLOBAL_SOCKET > -1 Then _FFLoadWait() Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$iMode: " & $iMode)) Return 0EndSwitchIf $bHide Then Local $hWin = _FFWindowGetHandle() WinSetState($hWin, "", @SW_HIDE)EndIfSetExtended($PID)Return 1EndFunc ;==>_FFStart; #FUNCTION# ===================================================================; Name ..........: _FFTabAdd; Description ...: Opens a new tab.; Beschreibung ..: Ă?ffnet einen neuen Tab; AutoIt Version : V3.3.0.0; Syntax ........: _FFTabAdd([$sURL = "about:blank"[, $bSelect = True[, $bLoadWait = True]]]); Parameter(s): .: $sURL - Optional: (Default = "about:blank") :; $bSelect - Optional: (Default = true) : Select new tab; $bLoadWait - Optional: (Default = true) : Wait while the page is loading; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:44:43 CET 2009 @947 /Internet Time/; Link ..........: https://developer.mo...org/en/XUL/tabs; Related .......: _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected; Example .......: Yes; ==============================================================================Func _FFTabAdd($sURL = "about:blank", $bSelect = True, $bLoadWait = True)Local Const $sFuncName = "_FFOpenURL"If $sURL = Default Then $sURL = "about:blank"If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0EndIfIf $bSelect Then _FFCmd("gBrowser.selectedTab = gBrowser.addTab('" & $sURL & "')", 3000) If Not @error Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIfElse _FFCmd("gBrowser.loadOneTab('" & $sURL & "',null,null,null,true)", 3000) If Not @error Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIfEndIfReturn 0EndFunc ;==>_FFTabAdd; #FUNCTION# ===================================================================; Name ..........: _FFTabClose; Description ...: Closes one or all existing tabs.; Beschreibung ..: SchlieĂ?t einen oder alle vorhandenen Tabs.; AutoIt Version : V3.3.0.0; Syntax ........: _FFTabClose([$vTab = -1[, $sMode = "index"]]); Parameter(s): .: $vTab - Optional: (Default = -1 = current tab) :; | index (0-n); | label; | prev; | next; | first; | last; | all (except current); $sMode - Optional: (Default = "index") :; | index; | label; | key or keyword; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Aug 03 16:13:15 CEST 2009; Link ..........: https://developer.mo...org/en/XUL/tabs; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected; Example .......: Yes; ==============================================================================Func _FFTabClose($vTab = -1, $sMode = "index")Local Const $sFuncName = "_FFTabClose"Local $sCommand;Local $bWarnLocal $iLength = _FFGetLength("tabs")Switch StringLower($sMode) Case "index" If $vTab = -1 Then $sCommand = "gBrowser.removeCurrentTab();" ElseIf $vTab > -1 And $vTab < $iLength Then $sCommand = "gBrowser.removeTab(gBrowser.mTabs[" & $vTab & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(int) $vTab: " & $vTab)) Return 0 EndIf Case "label" If _FFTabExists($vTab) Then $sCommand = "gBrowser.removeTab(gBrowser.mTabs[" & @extended & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vTab: " & $vTab)) Return 0 EndIf Case "key", "keyword" Switch StringLower($vTab) Case "prev" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[gBrowser.tabContainer.selectedIndex-1]);" Case "next" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[gBrowser.tabContainer.selectedIndex+1]);" Case "first" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[0]);" Case "last" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[gBrowser.tabContainer.childNodes.length-1]);" Case "all" ; browser.tabs.warnOnClose $sCommand = "gBrowser.removeAllTabsBut(gBrowser.selectedTab);" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(prev|next|first|last|all) $vTab: " & $vTab)) Return 0 EndSwitch Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label|key|keyword) $sMode: " & $sMode)) Return 0EndSwitchIf _FFCmd($sCommand & "gBrowser.tabContainer.childNodes.length", 3000) < $iLength - 1 Then Sleep(100) Return 1EndIfReturn 0EndFunc ;==>_FFTabClose; #FUNCTION# ===================================================================; Name ..........: _FFTabDuplicate; Description ...: Duplicates a tab; Beschreibung ..: Dupliziert einen Tab; AutoIt Version : V3.3.0.0; Syntax ........: _FFTabDuplicate([$vTab = -1[, $sMode = "index"[, $bSelect = False]]]); Parameter(s): .: $vTab - Optional: (Default = -1) : Tab to duplicate, -1 = current tab; $sMode - Optional: (Default = "index") :; | index; | label; $bToFront - Optional: (Default = false) : Bring duplicated tab to front; Return Value ..: Success - Lenght of tabs >= 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Aug 03 16:13:08 CEST 2009; Link ..........: https://developer.mo...org/en/XUL/tabs; Related .......: _FFTabAdd, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected; Example .......: Yes; ==============================================================================Func _FFTabDuplicate($vTab = -1, $sMode = "index", $bSelect = False)Local Const $sFuncName = "_FFTabDuplicate"If $sMode = "index" And Not IsInt($vTab) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vTab: " & $vTab)) Return 0EndIfIf $vTab = Default Then $vTab = -1If $sMode = Default Then $sMode = "index"Local $iRetLocal $sCommandSwitch StringLower($sMode) Case "index" If $vTab = -1 Then $sCommand = "gBrowser.duplicateTab(gBrowser.mCurrentTab);" ElseIf $vTab >= 0 And $vTab < _FFGetLength("tabs") Then $sCommand = "gBrowser.duplicateTab(gBrowser.mTabs[" & $vTab & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$vTab: " & $vTab)) Return 0 EndIf Case "label" If _FFTabExists($vTab) Then $sCommand = "gBrowser.duplicateTab(gBrowser.mTabs[" & @extended & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vTab: " & $vTab)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label) $sMode: " & $sMode)) Return 0EndSwitch$iRet = _FFCmd($sCommand & "gBrowser.tabContainer.childNodes.length;", 3000)If $bSelect Then _FFTabSetSelected("last")Return $iRetEndFunc ;==>_FFTabDuplicate; #FUNCTION# ===================================================================; Name ..........: _FFTabExists; Description ...: Checks if a tab exists; Beschreibung ..: PrĂźft ob ein Tab existiert.; AutoIt Version : V3.3.0.0; Syntax ........: _FFTabExists($sLabel); Parameter(s): .: $sLabel - Label of the tab (substring or RegEx); Return Value ..: Success - 1; @EXTENDED - Index of the tab; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Jul 27 08:47:03 CEST 2009; Link ..........: https://developer.mo...org/en/XUL/tabs; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabSetSelected, _FFTabGetSelected; Example .......: Yes; ==============================================================================Func _FFTabExists($sLabel)Local Const $sFuncName = "_FFTabExists"_FFLoadWait()Local $RetVal = Int(_FFCmd("FFau3.SearchTab('" & $sLabel & "')", 3000))Switch @error Case $_FF_ERROR_Success If $RetVal > -1 Then SetExtended($RetVal) Return 1 ElseIf $RetVal = -3 Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidExpression, "$sLabel: " & $sLabel)) Return 0 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sLabel: " & $sLabel)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError)) Return 0EndSwitchEndFunc ;==>_FFTabExists; #FUNCTION# ===================================================================; Name ..........: _FFTabSetSelected; Description ...: Select a tab; Beschreibung ..: Wählt ein Tab aus.; AutoIt Version : V3.3.0.0; Syntax ........: _FFTabSetSelected([$vTab = 0[, $sMode = "index"]]); Parameter(s): .: $vTab - Optional: (Default = 0) :; | index (0-n); | label = Substring or RegEx; | prev; | next; | first; | last; $sMode - Optional: (Default = "index") :; | index; | label; | otherwise the keywords in $vTab are used; Return Value ..: Success -; Failure - -1; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Aug 03 16:12:59 CEST 2009; Link ..........: https://developer.mo...org/en/XUL/tabs; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabGetSelected; Example .......: Yes; ==============================================================================Func _FFTabSetSelected($vTab = 0, $sMode = "index")Local Const $sFuncName = "_FFTabSetSelected"Local $sCommand = "gBrowser.tabContainer"If $sMode = "index" Then $sCommand &= ".selectedIndex = " & $vTabElseIf $sMode = "label" Then If _FFTabExists($vTab) Then $sCommand &= ".selectedIndex = " & @extended Else Return -1 EndIfElse Switch StringLower($vTab) Case "prev" $sCommand &= ".advanceSelectedTab( -1, true )" Case "next" $sCommand &= ".advanceSelectedTab( 1, true )" Case "first" $sCommand &= ".selectedIndex = 0" Case "last" $sCommand &= ".selectedIndex = gBrowser.tabContainer.childNodes.length -1" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label|prev|next|first|last) $sMode: " & $sMode)) Return -1 EndSwitchEndIfLocal $RetVal = _FFCmd($sCommand, 3000)Sleep(50)Return $RetValEndFunc ;==>_FFTabSetSelected; #FUNCTION# ===================================================================; Name ..........: _FFTabGetSelected; Description ...: Returns the name or the index of the selected tab.; Beschreibung ..: Gibt den Namen (label) oder den Index des aktuellen Tabs zurĂźck.; AutoIt Version : V3.3.0.0; Syntax ........: _FFTabGetSelected([$sMode = "index"]); Parameter(s): .: $sMode - Optional: (Default = "index") :; | index; | label; Return Value ..: Success - Tab index 0-n or label; Failure - -1; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Thu Apr 23 08:52:13 CEST 2009 @327 /Internet Time/; Link ..........: https://developer.mo...org/en/XUL/tabs; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected; Example .......: Yes; ==============================================================================Func _FFTabGetSelected($sMode = "index")Local Const $sFuncName = "_FFTabGetSelected"_FFLoadWait()Switch StringLower($sMode) Case "index" Return Int(_FFCmd("gBrowser.tabContainer.selectedIndex", 3000)) Case "label" Return _FFCmd("gBrowser.mTabs[gBrowser.tabContainer.selectedIndex].label", 3000) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label) $sMode: " & $sMode)) Return -1EndSwitchEndFunc ;==>_FFTabGetSelected; #FUNCTION# ===================================================================; Name ..........: _FFTableWriteToArray; Description ...: Writes a HTML-table to an array; Beschreibung ..: Kopiert eine HTML-Tabelle in ein Array.; AutoIt Version : V3.3.0.0; Syntax ........: _FFTableWriteToArray([$vTable = 0[, $sMode = "index"[, $sReturnMode = "text"[, $iFilter = 0[, $bTransponse = False]]]]]); Parameter(s): .: $vTable - Optional: (Default = 0) : Table selection by $sMode; $sMode - Optional: (Default = "index") :; | index (0-n); | name; | id; $sReturnMode - Optional: (Default = "text") :; | text; | html; $iFilter - Optional: (Default = 0) :; | 0 = No filter; | 1 = Remove all non ASCII; | 2 = Remove all double withespaces; | 4 = Remove all double linefeeds; | 8 = Remove all HTML-tags; | 16 = simple html-tag / entities convertor; $bTransponse - Optional: (Default = False) : Switch Rows and Columns; Return Value ..: Success - Array containing contents of the table; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert, Johannes Schirmer; Date ..........: Fri Sep 18 17:38:05 CEST 2009 @693 /Internet Time/; Link ..........:; Related .......: _FFXpath; Example .......: Yes; ==============================================================================Func _FFTableWriteToArray($vTable = 0, $sMode = "index", $sReturnMode = "text", $iFilter = 0, $bTransponse = False)Local $sFuncName = "_FFTableWriteToArray"Local $sTable, $sRndLocal $bTrace = $_FF_COM_TRACE$_FF_COM_TRACE = FalseSwitch StringLower($sMode) Case "index" If IsInt($vTable) And $vTable < _FFGetLength("tables") Then $sTable = "//table[" & $vTable + 1 & "]" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(INT) $vTable: " & $vTable)) Return 0 EndIf Case "name" $sTable = "//table[@name=" & $vTable & &quot]" Case "id" $sTable = "//table[@id=" & $vTable & &quot]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sMode: " & $sMode)) Return 0EndSwitchSwitch StringLower($sReturnMode) Case "text" $sReturnMode = "textContent" Case "html" $sReturnMode = "innerHTML" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(text|html) $sReturnMode: " & $sReturnMode)) Return 0EndSwitchIf Not IsInt($iFilter) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iFilter: " & $iFilter)) Return 0EndIfIf Not IsBool($bTransponse) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(boolean) $bTransponse: " & $bTransponse)) Return 0EndIfLocal $iRows = _FFXPath($sTable & "//tr", Default, 10)If @error Or $iRows = 0 Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, $sTable & " not found.")) Return 0EndIfLocal $aColsIf _FFXPath($sTable & "//@colspan", Default, 10) > 0 Or _FFXPath($sTable & "//@rowspan", Default, 10) > 0 Then Local $iColsTmp[$iRows + 1] Local $iCols = 0, $iSum, $iCol For $i = 1 To $iRows $iSum = 0 $aCols = _FFXPath($sTable & "//tr[" & $i & "]//td", "colSpan", 6) $iColsTmp[$i - 1] = $aCols[0] For $j = 1 To $aCols[0] $iSum += $aCols[$j] Next If $iSum > $iCols Then $iCols = $iSum Next Local $aTable[$iRows][$iCols] Local $iRow = 0 Local $sCmd, $aTmp For $i = 0 To $iRows $sRnd = "FF" & Random(100, 999, 1) $iCol = 0 If $iColsTmp[$i] < $iCols Then For $j = 0 To $iColsTmp[$i] - 1 $sCmd = "FFau3.xpath=window.content.document.evaluate('//tr[" & $i + 1 & "]//td[" & $j + 1 & "]',window.content.document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;FFau3.xpath." & $sReturnMode & "+'" & $sRnd & "'+FFau3.xpath.colSpan" $aTmp = StringSplit(_FFCmd($sCmd), $sRnd, 3) $aTable[$iRow][$iCol] = __FFFilterString($aTmp[0], $iFilter) $iCol += $aTmp[1] Next Else Local $aRows = _FFXPath($sTable & "//tr[" & $i + 1 & "]//td", $sReturnMode, 6, $iFilter) If $aRows[0] > 0 Then For $j = 1 To $aRows[0] $aTable[$i][$j - 1] = $aRows[$j] Next EndIf EndIf $iRow += 1 NextElse $iCols = _FFXPath($sTable & "//tr[last()]//td", Default, 10) Local $aTable[$iRows][$iCols] If $iCols > $iRows Then For $i = 0 To $iRows - 1 $aCols = _FFXPath($sTable & "//tr[" & $i + 1 & "]//td", $sReturnMode, 6, $iFilter) If $aCols[0] > 0 Then For $j = 0 To $iCols - 1 $aTable[$i][$j] = $aCols[$j + 1] Next EndIf Next Else For $i = 0 To $iCols - 1 $aRows = _FFXPath($sTable & "//tr//td[" & $i + 1 & "]", $sReturnMode, 6, $iFilter) If $aRows[0] > 0 Then For $j = 0 To $iRows - 1 $aTable[$j][$i] = $aRows[$i + 1] Next EndIf Next EndIfEndIfIf $bTransponse Then Local $iD1 = UBound($aTable, 1), $iD2 = UBound($aTable, 2), $aTmp[$iD2][$iD1] For $i = 0 To $iD2 - 1 For $j = 0 To $iD1 - 1 $aTmp[$i][$j] = $aTable[$j][$i] Next Next $aTable = $aTmpEndIf$_FF_COM_TRACE = $bTraceReturn $aTableEndFunc ;==>_FFTableWriteToArray; #FUNCTION# ===================================================================; Name ..........: _FFWindowClose; Description ...: Closes a browser window; Beschreibung ..: SchlieĂ?t ein Browser Fenster.; Syntax ........: _FFWindowClose([$sSearch = ""[, $sSearchMode = "title"]]); Parameter(s): .: $sSearch - Optional: (Default = "") : "" = current window, Substring to search; $sSearchMode - Optional: (Default = "title") :; | "title" window title; | "label" tab label; | "href" current url; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:33:01 CET 2009 @939 /Internet Time/; Link ..........: https://developer.mo...g/En/DOM/Window, https://developer.mo...IWindowMediator; Related .......: _FFWindowSelect, _FFWindowOpen; Example .......: Yes; ==============================================================================Func _FFWindowClose($sSearch = "", $sSearchMode = "title")Local Const $sFuncName = "_FFWindowClose"If $sSearch = "" Then _FFCmd("window.close();") Return @errorEndIfSwitch StringLower($sSearchMode) Case "title", "label", "href" ; current href Local $sRetVal = _FFCmd(StringFormat("FFau3.CloseWin('%s','%s')", $sSearch, $sSearchMode)) If Not @error And $sRetVal = 1 Then Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sSearch: " & $sSearch)) EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(title|label|href) $sSearchMode: " & $sSearchMode))EndSwitchReturn 0EndFunc ;==>_FFWindowClose; #FUNCTION# ===================================================================; Name ..........: _FFWindowGetHandle; Description ...: Returns the window-handle (hwnd) from the current browser-window.; Beschreibung ..: Liefert das Window-handle (hwnd) des aktuellen Browser Fenster.; AutoIt Version : V3.3.0.0; Syntax ........: _FFWindowGetHandle(); Parameter(s): .:; Return Value ..: Success - Window handle; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Sun Oct 18 21:35:12 CEST 2009; Link ..........:; Related .......: _FFWindowClose, _FFWindowSelect, _FFWindowOpen; Example .......: Yes; ==============================================================================Func _FFWindowGetHandle()Local Const $sFuncName = "_FFWindowGetHandle"; in the future to handle with XPCOM =#=Local $bErr = FalseLocal $hWindow = ""BlockInput(1) ; =#=If Not @error Then Local $sTitleRnd = "FFAU3" & Random(1000000000, 9999999999, 1) _FFCmd("FFau3.tmp=document.title;document.title='" & $sTitleRnd & "'") Local $iMatchMode = AutoItSetOption("WinTitleMatchMode", 1) Sleep(500) $hWindow = WinGetHandle($sTitleRnd) If @error Then $bErr = True BlockInput(0) AutoItSetOption("WinTitleMatchMode", $iMatchMode) _FFCmd("document.title=FFau3.tmp") ConsoleWrite("_FFWindowGetHandle: " & $hWindow & @CRLF)EndIfBlockInput(0)If $bErr Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError))Return $hWindowEndFunc ;==>_FFWindowGetHandle; #FUNCTION# ===================================================================; Name ..........: _FFWindowSelect; Description ...: Selects the active window for all other functions; Beschreibung ..: Wählt das aktive Browser Fenster fĂźr alle nachfolgenden Befehle.; Syntax ........: _FFWindowSelect([$sSearch = ""[, $sSearchMode = "title"[, $bActivate = True]]]); Parameter(s): .: $sSearch - Optional: (Default = "") : "" = most recent window, Substring to search; $sSearchMode - Optional: (Default = "title") :; | "title" window title; | "label" tab label; | "href" current url; $bActivate - Optional: (Default = True) :; Return Value ..: Success - 1; @EXTENDED - Window handle; Failure - 0; @ERROR -; @EXTENDED - ""; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:32:05 CET 2009 @938 /Internet Time/; Link ..........: https://developer.mo...g/En/DOM/Window, https://developer.mo...IWindowMediator; Related .......: _FFWindowOpen, _FFWindowClose, _FFWindowGetHandle; Example .......: Yes; ==============================================================================Func _FFWindowSelect($sSearch = "", $sSearchMode = "title", $bActivate = True)Local Const $sFuncName = "_FFWindowSelect"Local $hWin = ""If $sSearch = "" Then Local $sCommand = 'Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser")' _FFCmd("repl.enter(" & $sCommand & ")") If Not @error Then $hWin = _FFWindowGetHandle() If Not @error And $bActivate Then WinActivate($hWin) SetExtended($hWin) Return 1 EndIf SetExtended($hWin) Return 0EndIfSwitch StringLower($sSearchMode) Case "title", "label", "href" Local $sRetVal = _FFCmd(StringFormat("FFau3.SelectWin('%s','%s','navigator:browser');", $sSearch, $sSearchMode)) If Not @error And $sRetVal = 1 Then $hWin = _FFWindowGetHandle() If Not @error And $bActivate Then WinActivate($hWin) SetExtended($hWin) Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sSearch: " & $sSearch), $hWin) EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(title|label|href) $sSearchMode: " & $sSearchMode), $hWin)EndSwitchSetExtended($hWin)Return 0EndFunc ;==>_FFWindowSelect; #FUNCTION# ===================================================================; Name ..........: _FFWindowOpen; Description ...: Opens a new browser window; Beschreibung ..: Ă?ffnet ein neues Browser Fenster.; Syntax ........: _FFWindowOpen([$sURL = "about:blank"[, $bActivate = True[, $bLoadWait = True]]]); Parameter(s): .: $sURL - Optional: (Default = "about:blank") :; $bActivate - Optional: (Default = True); $bLoadWait - Optional: (Default = True) :; Return Value ..: Success - 1 and sets; @EXTENDED - Window handle; Failure - 0 and sets; @ERROR -; @EXTENDED - ""; Author(s) .....: Thorsten Willert; Date ..........: Fri Nov 13 18:31:06 CET 2009; Link ..........: https://developer.mo...g/En/DOM/Window, https://developer.mo...IWindowMediator; Related .......: _FFWindowSelect, _FFWindowClose, _FFWindowGetHandle; Example .......: Yes; ==============================================================================Func _FFWindowOpen($sURL = "about:blank", $bActivate = True, $bLoadWait = True)Local Const $sFuncName = "_FFWindowOpen"If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0EndIfLocal $bTrace = $_FF_COM_TRACE$_FF_COM_TRACE = FalseConsoleWrite("_FFWindowOpen: " & $sURL & @CRLF)_FFCmd("window.open('" & $sURL & "');")If $bLoadWait Then _FFLoadWait()If Not @error Then If _FFWindowSelect() Then Local $hWin = @extended If Not @error And $bActivate Then WinActivate($hWin) __FFSendJavaScripts() $_FF_COM_TRACE = $bTrace SetExtended($hWin) Return 1 EndIfEndIf$_FF_COM_TRACE = $bTraceSetExtended("")Return 0EndFunc ;==>_FFWindowOpen; #FUNCTION# ===================================================================; Name ..........: _FFWriteHTML; Description ...: Replaces the html of body element; Beschreibung ..: Ersetzt das HTML des Body Elements.; Syntax ........: _FFWriteHTML([$sHTML = ""[, $sMode = "body"]]); Parameter(s): .: $sHTML - Optional: (Default = "") :; $sMode - Optional: (Default = "body") :; | body; | html; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:30:01 CET 2009 @937 /Internet Time/; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFWriteHTML($sHTML = "", $sMode = "body")Local Const $sFuncName = "_FFWriteHTML"Local $sCommandSwitch StringLower($sMode) Case "body" $sCommand = "body" Case "html" $sCommand = "documentElement" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(body|html) $sMode: " & $sMode)) Return 0EndSwitch$sCommand = StringFormat("content.document.%s.innerHTML='" & $sHTML & "';", $sCommand)Local $sRetVal = _FFCmd($sCommand)If Not @error And $sRetVal <> "_FFCmd_Err" Then Return 1Return 0EndFunc ;==>_FFWriteHTML; #FUNCTION# ===================================================================; Name ..........: _FFXPath; Description ...: Returns and sets values due to a XPath-query.; Beschreibung ..: Abfrage und setzen von Werten anhand einer XPath-Abfrage.; AutoIt Version : V3.3.0.0; Syntax ........: _FFXPath($sQuery[, $sAttribute = ""[, $iReturnType = 9[, $iFilter = 0]]]); Parameter(s): .: $sQuery - XPath query; $sAttribute - Optional: (Default = "") : attribute OR searchstring for SEARCH; $iReturnType - Optional: (Default = 0) :; | 0 = ANY_TYPE; | 1 = NUMBER_TYPE (Returns numberValue); | 2 = STRING_TYPE (Return stringValue); | 3 = BOOLEAN_TYPE (Returns booleanValue); | 4 = UNORDERED_NODE_ITERATOR_TYPE - not implemented; | 5 = ORDERED_NODE_ITERATOR_TYPE - not implemented; | 6 = UNORDERED_NODE_SNAPSHOT_TYPE (Returns arrray); | 7 = ORDERED_NODE_SNAPSHOT_TYPE (Returns arrray); | 8 = ANY_UNORDERED_NODE_TYPE (Returns singleNodeValue) (Object in FFau3.xpath); | 9 = FIRST_ORDERED_NODE_TYPE (Returns singleNodeValue) (Object in FFau3.xpath); | 10 = COUNT (Returns the number of matches); | 11 = CONTAINS (stringValue contains substring in $sAttribute) (Returns booleanValue); | 12 = STARTS-WITH (stringValue start-with string in $sAttribute) (Returns booleanValue); | 13 = SUBSTRING-AFTER (stringValue substring-after in $sAttribute); | 14 = SUBSTRING-BEFORE (stringValue substring-bevore in $sAttribute); $iFilter - Optional: (Default = 0) :; | 0 = No filter; | 1 = Remove all non ASCII; | 2 = Remove all double withespaces; | 4 = Remove all double linefeeds; | 8 = Remove all HTML-tags; | 16 = simple html-tag / entities convertor; Return Value ..: Success - Value $iReturnType 0-5 and 8-10; | Value $iReturnType 8-9 + object FFau3.xpath; | Array $iReturnType 6-7 or if an attribute is set the number of the matches.; Failure - 0 and sets; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Tue Feb 16 19:43:55 CET 2010; Link ..........: http://www.w3.org/TR/xpath, https://developer.mozilla.org/en/XPath, https://developer.mo.../En/XPathResult, https://developer.mo...h_in_JavaScript; Related .......: _FFGetValue, _FFSetValue; Example .......: Yes; ==============================================================================Func _FFXPath($sQuery, $sAttribute = "", $iReturnType = 9, $iFilter = 0)Local Const $sFuncName = "_FFXPath"If $sQuery = "" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Empty String $sQuery")) Return 0EndIfIf Not IsInt($iFilter) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iFilter: " & $iFilter)) Return 0EndIfIf $iReturnType < 10 And Not StringInStr($sAttribute, "=") And StringRegExp($sAttribute, "[\W]+") Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sAttribute: " & $sAttribute)) Return 0EndIfIf $sAttribute = Default Then $sAttribute = "textContent"If $iReturnType = Default Then $iReturnType = 0$sQuery = StringReplace($sQuery, '"', "'")Local $sResult, $sValueSwitch StringLower($sAttribute) Case "textcontent" $sAttribute = "textContent" Case "innerhtml" $sAttribute = "innerHTML"EndSwitchSwitch $iReturnType Case 0 $sResult = "ANY_TYPE" Case 1 $sResult = "NUMBER_TYPE" $sValue = ".numberValue" Case 2 $sResult = "STRING_TYPE" $sValue = ".stringValue" Case 3 $sResult = "BOOLEAN_TYPE" $sValue = ".booleanValue" #cs - not implemented yet Case 4 $sResult = "UNORDERED_NODE_ITERATOR_TYPE" Case 5 $sResult = "ORDERED_NODE_ITERATOR_TYPE" #ce Case 6 $sResult = "UNORDERED_NODE_SNAPSHOT_TYPE" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute Case 7 $sResult = "ORDERED_NODE_SNAPSHOT_TYPE" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute Case 8 $sResult = "ANY_UNORDERED_NODE_TYPE" $sValue = ".singleNodeValue" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute Case 9 $sResult = "FIRST_ORDERED_NODE_TYPE" $sValue = ".singleNodeValue" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute ; no datatypes Case 10 $sQuery = "count(" & $sQuery & ")" $sResult = "NUMBER_TYPE" $sValue = ".numberValue" Case 11 $sQuery = "contains(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "BOOLEAN_TYPE" $sValue = ".booleanValue" Case 12 $sQuery = "starts-with(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "BOOLEAN_TYPE" $sValue = ".booleanValue" Case 13 $sQuery = "substring-after(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "STRING_TYPE" $sValue = ".stringValue" Case 14 $sQuery = "substring-before(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "STRING_TYPE" $sValue = ".stringValue" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(int) $iReturnType: 0-9 10-14: " & $iReturnType)) Return 0EndSwitchLocal $sErrVal = "_FFXPath_Error: "Local $sCommandIf $iReturnType < 6 Or $iReturnType >= 8 Then $sCommand = 'try{FFau3.xpath=FFau3.WCD.evaluate("' & $sQuery & '",FFau3.WCD,null,XPathResult.' & $sResult & ',null)' $sCommand &= $sValue & ";}catch(e){'" & $sErrVal & "'+e;};"ElseIf $iReturnType = 6 Or $iReturnType = 7 Then Local $sDelimiter = "FF" & Random(100, 999, 1) $sCommand = 'try{with(FFau3){' $sCommand &= 'this.obj=FFau3.WCD.evaluate("' & $sQuery & '",FFau3.WCD,null,XPathResult.' & $sResult & ',null);' $sCommand &= 'this.tmp=this.obj.snapshotLength;' If Not StringInStr($sAttribute, "=") Then $sCommand &= 'for(var i=0;i<this.obj.snapshotLength;i++){this.tmp+="' & $sDelimiter & '"+this.obj.snapshotItem(i)' & $sValue & ';};' Else $sCommand &= 'for(var i=0;i<this.obj.snapshotLength;i++){this.obj.snapshotItem(i)' & $sValue & ';};' EndIf $sCommand &= "this.tmp;}}catch(e){'" & $sErrVal & "' +e;};"EndIfLocal $sRetVal = _FFCmd("FFau3.xpath=null;" & $sCommand)If Not StringInStr($sRetVal, $sErrVal) Then __FFFilterString($sRetVal, $iFilter) If $iFilter > 0 Then __FFFilterString($sRetVal, $iFilter) If $iReturnType = 6 Or $iReturnType = 7 Then Return StringSplit($sRetVal, $sDelimiter, 3) Else If $iReturnType < 10 And $sAttribute = "" Then Return "OBJECT|FFau3.xpath" Return StringStripWS($sRetVal, 3) EndIfElse If StringInStr($sRetVal, "TypeError") And StringInStr($sRetVal, "is null") Then SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "singleNodeValue is null $sQuery: " & $sQuery & " - " & $sAttribute)) ElseIf StringInStr($sRetVal, "NS_ERROR_DOM_INVALID_EXPRESSION_ERR") Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidExpression, "NS_ERROR_DOM_INVALID_EXPRESSION_ERR $sQuery: " & $sQuery)) Else SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, $sRetVal)) EndIf Return 0EndIfEndFunc ;==>_FFXPath; #FUNCTION# ===================================================================; Name ..........: _FFObjGet; Description ...: Returns an object (string to use with the other _FFObj* functions); Beschreibung ..: Liefert ein Object zurueck. (String zur Verwendung mit den anderen _FFObj* Funktionen); AutoIt Version : V3.3.0.0; Syntax ........: _FFObjGet($sElement[, $sMode = "id"[, $iIndex = 0]]); Parameter(s): .: $sElement -; $sMode - Optional: (Default = "id") :; | ID; | Name + index; | Class + index; | Tag-name + index; $iIndex - Optional: (Default = 0) :; Return Value ..: Success - String (object to use in the _FFObj* functions); Failure - Epmty string; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Oct 16 19:08:02 CEST 2009; Link ..........:; Related .......: _FFObj, _FFObjNew, _FFObjDelete, _FFClick; Example .......: Yes; ==============================================================================Func _FFObjGet($sElement, $sMode = "id", $iIndex = 0)Local Const $sFuncName = "_FFObjGet"Local $sRetSwitch StringLower($sMode) Case "id" $sRet = ".getElementById('" & $sElement & "')" Case "name" $sRet = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sRet = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sRet = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(id|name|class|tag) $sMode: " & $sMode)) Return ""EndSwitchLocal $RetVal = _FFCmd("window.content.document" & $sRet & "?1:0;")If Not @error And $RetVal = 1 Then Return "OBJECT|" & $sRetElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement not found: " & $sElement)) Return ""EndIfEndFunc ;==>_FFObjGet; #FUNCTION# ===================================================================; Name ..........: _FFObj; Description ...: Returns or sets an value of an attribute.; Beschreibung ..: Liefert oder setzt den Wert eines Attributes.; AutoIt Version : V3.3.0.0; Syntax ........: _FFObj($sObject[, $sAttrib = ""[, $vValue = ""]]); Parameter(s): .: $sObject - Object or element in FireFox; $sAttrib - Optional: (Default = "") :; $vValue - Optional: (Default = "") :; Return Value ..: Success -; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Oct 16 19:07:54 CEST 2009; Link ..........:; Related .......: _FFObjGet, _FFObjNew, _FFObjDelete; Example .......: Yes; ==============================================================================Func _FFObj($sObject, $sAttrib = "", $vValue = "")Local Const $sFuncName = "_FFObj"If StringLeft($sObject, 7) = "OBJECT|" Then $sObject = StringMid($sObject, 8)If StringLeft($sObject, 1) = "." Then $sObject = "window.content.document" & $sObjectIf Not (StringInStr($sObject, "window.content") Or StringInStr($sObject, "FFau3.")) Then $sObject = "FFau3." & $sObjectIf $sAttrib <> "" Then If Not StringInStr($sAttrib, "(") Then _FFCmd($sObject & ".hasAttribute('" & $sAttrib & "')") If @error And $vValue <> "" Then ;SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sAttrib not found: " & $sAttrib)) _FFCmd($sObject & "setAttributeNode('" & $sAttrib & "')") EndIf EndIf $sObject &= "." & $sAttrib If IsInt($vValue) Then $sObject &= "=" & $vValue ElseIf IsBool($vValue) Then $sObject &= "=" & __FFB2S($vValue) ElseIf $vValue <> "" Then $sObject &= "='" & $vValue & "'" EndIfEndIfLocal $RetVal = _FFCmd($sObject)If Not @error And $RetVal <> "_FFCmd_Err" Then Return $RetValElse SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sObject not found: " & $sObject)) Return ""EndIfEndFunc ;==>_FFObj; #FUNCTION# ===================================================================; Name ..........: _FFObjNew; Description ...: Creates a new object in FireFox.; Beschreibung ..: Erzeugt ein neues Object in FireFox.; AutoIt Version : V3.3.0.0; Syntax ........: _FFObjNew($sNewObject, $sObject); Parameter(s): .: $sNewObject -; $sObject -; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Tue Apr 07 15:14:59 CEST 2009; Link ..........:; Related .......: _FFObjGet, _FFObj, _FFObjDelete; Example .......: Yes; ==============================================================================Func _FFObjNew($sNewObject, $sObject)If StringRegExp($sNewObject, "[\W]+") Then Return 0Local $RetVal = _FFCmd("try{FFau3." & $sNewObject & "=" & $sObject & "}catch(e){};FFau3." & $sNewObject & "?1:0;", 3000, False)Return SetError(Number($RetVal), @extended, $RetVal)EndFunc ;==>_FFObjNew; #FUNCTION# ===================================================================; Name ..........: _FFObjDelete; Description ...: Deletes an object in FireFox.; Beschreibung ..: Loescht ein Objekt in FireFox.; AutoIt Version : V3.3.0.0; Syntax ........: _FFObjDelete($sObject); Parameter(s): .: $sObject -; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Wed Apr 08 14:21:26 CEST 2009 @556 /Internet Time/; Link ..........:; Related .......: _FFObjGet, _FFObjNew, _FFObj; Example .......: Yes; ==============================================================================Func _FFObjDelete($sObject)Local $sFFau3 = "simulateevent getlinkinfo getlinks searchimagebysize searchlink searchtab closewin selectwin"If StringInStr($sFFau3, StringLower($sObject)) Then Return 0Return _FFCmd("delete FFau3." & $sObject & ";!FFau3." & $sObject & "?1:0;")EndFunc ;==>_FFObjDelete; #FUNCTION# ===================================================================; Name ..........: _FFAu3Option; Description ...: Sets and get options for the FF.au3; Beschreibung ..: Abfrage und Setzen von Optionen fĂźr die FF.au3; AutoIt Version : V3.3.0.0; Syntax ........: _FFAu3Option($sOption[, $vValue = ""]); Parameter(s): .: $sOption - LoadWaitTimeOut; | SearchMode; | ComTrace; | ErrorMsgBox; $vValue - Optional: (Default = "") : if noe value is given, the current value is returned; | SearchMode 0 = SubString, 1 = Compare; | LoadWaitTimeOut (int / min. 1000); | LoadWaitStop (bool) stop loading after LoadWaitTimeOut; | ComTrace (bool); | ErrorMsgBox (bool); Return Value ..: Success - 1 / current value; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Feb 15 22:14:23 CET 2010; Link ..........:; Related .......:; Example .......: Yes; ==============================================================================Func _FFAu3Option($sOption, $vValue = "")Local Const $sFuncName = "_FFOption"Switch $sOption Case "SearchMode" If $vValue == "" Then Return $_FF_SEARCH_MODE If Not IsInt($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vValue: " & $vValue)) Return 0 EndIf If $vValue > 1 Then $vValue = 0 $_FF_SEARCH_MODE = $vValue Case "LoadWaitTimeOut" If $vValue == "" Then Return $_FF_LOADWAIT_TIMEOUT If Not IsInt($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vValue: " & $vValue)) Return 0 EndIf If $vValue < 1000 Then $vValue = 1000 $_FF_LOADWAIT_TIMEOUT = $vValue Case "LoadWaitStop" If $vValue == "" Then Return $_FF_LOADWAIT_STOP If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $_FF_LOADWAIT_STOP = $vValue Case "ComTrace" If $vValue == "" Then Return $_FF_COM_TRACE If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $_FF_COM_TRACE = $vValue Case "ErrorMsgBox" If $vValue == "" Then Return $_FF_ERROR_MSGBOX If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $_FF_ERROR_MSGBOX = $vValue Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(SearchMode|LoadWaitTimeOut|ComTrace|ErrorMsgBox) $sOption" & $sOption))EndSwitchReturn 1EndFunc ;==>_FFAu3Option;===============================================================================;; Internal Functions with names starting with two underscores will not be documented; as user functions;; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFRecv; Description ...:; AutoIt Version : V3.3.0.0; Syntax ........: __FFRecv([$iTimeOut = 10000]); Parameter(s): .: $iTimeOut - Optional: (Default = 10000) : TimeOut for __FFWaitForRepl; Return Value ..: Success - Return value from MozRepl; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:27:52 CET 2009 @936 /Internet Time/; ==============================================================================Func __FFRecv($iTimeOut = 30000)Local $sRet = __FFWaitForRepl($iTimeOut)Local $iErr = @error$sRet = StringStripWS($sRet, 3); Removing leading and trailing "If StringLeft($sRet, 1) = '"' Then $sRet = StringTrimLeft($sRet, 1)If StringRight($sRet, 1) = '"' Then $sRet = StringTrimRight($sRet, 1); String to boolIf $sRet = "true" Then $sRet = 1ElseIf $sRet = "false" Then $sRet = 0EndIfIf $_FF_COM_TRACE Then ConsoleWrite("__FFRecv: " & $sRet & @CRLF)SetError($iErr)Return $sRetEndFunc ;==>__FFRecv; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFSend; Description ...:; AutoIt Version : V3.3.0.0; Syntax ........: __FFSend($sCommand); Parameter(s): .: $sCommand - String to send; Return Value ..: Success - 1; Failure - 0; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Mon Mar 23 22:26:09 CET 2009 @934 /Internet Time/; ==============================================================================Func __FFSend($sCommand)Local Const $sFuncName = "__FFSend"If Not __FFIsSocket($_FF_GLOBAL_SOCKET) Then SetError(__FFError($sFuncName, $_FF_ERROR_SocketError)) Return 0EndIfTCPSend($_FF_GLOBAL_SOCKET, $sCommand & @CRLF)If Not @error Then If $_FF_COM_TRACE Then ConsoleWrite("__FFSend: " & $sCommand & @CRLF) Return 1Else SetError(__FFError($sFuncName, $_FF_ERROR_SendRecv, "TCPSend: " & $sCommand)) Return 0EndIfEndFunc ;==>__FFSend; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFChromeSelect; Description ...: Some shortcuts for chrome; AutoIt Version : V3.3.0.0; Syntax ........: __FFChromeSelect($sOpt); Parameter(s): .: $sOpt - Shortcut; Return Value ..: Success - crome: + ....xul; Failure - crome: + $sOpt; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Sat Feb 14 12:33:16 CET 2009 @523 /Internet Time/; ==============================================================================Func __FFChromeSelect($sOpt)Local $sXULSwitch StringLower($sOpt) Case "bookmarks" $sXUL = "//browser/content/bookmarks/bookmarksPanel.xul" Case "history" $sXUL = "//browser/content/history/history-panel.xul" Case "extensions" $sXUL = "//mozapps/content/extensions/extensions.xul?type=extensions" Case "advanced-scripts" $sXUL = "//browser/content/preferences/advanced-scripts.xul" Case "changeaction" $sXUL = "//browser/content/preferences/changeaction.xul" Case "prefs" $sXUL = "//browser/content/preferences/preferences.xul" Case "colors" $sXUL = "//browser/content/preferences/colors.xul" Case "connection" $sXUL = "//browser/content/preferences/connection.xul" Case "cookies" $sXUL = "//browser/content/preferences/cookies.xul" Case "downloads" $sXUL = "//mozapps/content/downloads/downloads.xul" Case "downloadactions" $sXUL = "//browser/content/preferences/downloadactions.xul" Case "fonts" $sXUL = "//browser/content/preferences/fonts.xul" Case "languages" $sXUL = "//browser/content/preferences/languages.xul" Case "permissions" $sXUL = "//browser/content/preferences/permissions.xul" Case "sanitize" $sXUL = "//browser/content/preferences/sanitize.xul" Case "fireftp" $sXUL = "//fireftp/content/fireftp.xul" Case Else $sXUL = $sOptEndSwitchReturn "chrome:" & $sXULEndFunc ;==>__FFChromeSelect; #FUNCTION# ===================================================================; Name ..........: __FFFilterString; Description ...: Filter for strings; AutoIt Version : V3.3.0.0; Syntax ........: __FFFilterString(ByRef $sString[, $iMode = 1]); Parameter(s): .: $sString - String to filter; $iMode - Optional: (Default = 0) : removes nothing; - 0 = no filter; - 1 = removes non ascii characters; - 2 = removes all double whitespaces; - 4 = removes all double linefeeds; - 8 = removes all html-tags; - 16 = simple html-tag / entities convertor; Return Value ..: Success - Filterd String; Failure - Input String; Author(s) .....: Thorsten Willert; Date ..........: Wed Apr 08 20:58:17 CEST 2009 @832 /Internet Time/; ==============================================================================Func __FFFilterString(ByRef $sString, $iMode = 0)If $iMode = 0 Then Return $sString;16 simple HTML tag converterIf $iMode >= 16 And $iMode < 32 Then Local $sRepl[2][6] = [["<br>", " ", ">", "<", "&", """], _ [@CRLF, " ", ">", "<", "&", '"']] $sString = StringRegExpReplace($sString, "<p.*>", @CRLF & @CRLF) For $i = 0 To UBound($sRepl, 2) - 1 $sString = StringReplace($sString, $sRepl[0][$i], $sRepl[1][$i]) Next $iMode -= 16EndIf;8 Tag filterIf $iMode >= 8 And $iMode < 16 Then $sString = StringRegExpReplace($sString, "<[^>]*>", "") $iMode -= 8EndIf; 4 remove all double cr, lfIf $iMode >= 4 And $iMode < 8 Then $sString = StringRegExpReplace($sString, "([ \t]*[\n\r]+[ \t]*)", @CRLF) $sString = StringRegExpReplace($sString, "[\n\r]+", @CRLF) $iMode -= 4EndIf; 2 remove all double withespacesIf $iMode = 2 Or $iMode = 3 Then $sString = StringRegExpReplace($sString, "[[:blank:]]+", " ") $sString = StringRegExpReplace($sString, "\n[[:blank:]]+", @CRLF) $sString = StringRegExpReplace($sString, "[[:blank:]]+\n", "") $iMode -= 2EndIf; 1 remove all non ASCIIIf $iMode = 1 Then $sString = StringRegExpReplace($sString, "[^\x00-\x7F]", " ")EndIfReturn $sStringEndFunc ;==>__FFFilterString; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFError; Description ...: Writes Error to the console and show message-boxes if the script is compiled; AutoIt Version : V3.3.0.0; Syntax ........: __FFError($sWhere, ByRef $i_FF_ERROR[, $sMessage = ""]); Parameter(s): .: $i_FF_ERROR - Error Const; $sMessage - Optional: (Default = "") : Additional Information; Return Value ..: Success - Error Const from $i_FF_ERROR; Author(s) .....: Thorsten Willert; Date ..........: Sat Jul 18 11:52:36 CEST 2009; ==============================================================================Func __FFError($sWhere, Const ByRef $i_FF_ERROR, $sMessage = "")Local $sOut, $sMsgSleep(200)Switch $i_FF_ERROR Case $_FF_ERROR_Success Return $_FF_ERROR_Success Case $_FF_ERROR_GeneralError $sOut = "General Error" Case $_FF_ERROR_SocketError $sOut = "Socket Error" Case $_FF_ERROR_InvalidDataType $sOut = "Invalid data type" Case $_FF_ERROR_InvalidValue $sOut = "Invalid value" Case $_FF_ERROR_Timeout $sOut = "Timeout" Case $_FF_ERROR_NoMatch $sOut = "No match" Case $_FF_ERROR_RetValue $sOut = "Error return value" Case $_FF_ERROR_SendRecv $sOut = "Error TCPSend / TCPRecv" Case $_FF_ERROR_ReplException $sOut = "MozRepl Exception" Case $_FF_ERROR_SendRecv $sOut = "Error TCPSend / TCPRecv" Case $_FF_ERROR_InvalidExpression $sOut = "Invalid Expression"EndSwitchIf $sMessage = "" Then $sMsg = $sWhere & " ==> " & $sOut & @CRLF ConsoleWriteError($sMsg) If @Compiled Then If $_FF_ERROR_MSGBOX And $i_FF_ERROR < 6 Then MsgBox(16, "FF.au3 Error:", $sMsg) DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg) EndIfElse $sMsg = $sWhere & " ==> " & $sOut & ": " & $sMessage & @CRLF ConsoleWriteError($sMsg) If @Compiled Then If $_FF_ERROR_MSGBOX And $i_FF_ERROR < 6 Then MsgBox(16, "FF.au3 Error:", $sMsg) DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg) EndIfEndIfReturn $i_FF_ERROREndFunc ;==>__FFError; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFIsIP; Description ...: IP4 check; AutoIt Version : V3.3.0.0; Syntax ........: __FFIsIP(ByRef $IP[, $bSubstring = False]); Parameter(s): .: $IP - IP4 Address; Return Value ..: Success - 1; Failure - 0; Author(s) .....: Thorsten Willert; Date ..........: Sun Feb 15 00:21:41 CET 2009; ==============================================================================Func __FFIsIP(ByRef $IP, $bSubstring = False)If $bSubstring Then Return StringRegExp(StringStripWS($IP, 3), "(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])")Else Return StringRegExp(StringStripWS($IP, 3), "^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$")EndIfEndFunc ;==>__FFIsIP; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFIsPort; Description ...: Port check; AutoIt Version : V3.3.0.0; Syntax ........: __FFIsPort(ByRef $iPort); Parameter(s): .: $iPort - Port number 1024-65535; Return Value ..: Success - 1; Failure - 0; Author(s) .....: Thorsten Willert; Date ..........: 28. August 2007; ==============================================================================Func __FFIsPort(ByRef $iPort)Return (IsInt($iPort) And $iPort >= 1024 And $iPort <= 65535)EndFunc ;==>__FFIsPort; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFIsSocket; Description ...: Socket check; AutoIt Version : V3.3.0.0; Syntax ........: __FFIsSocket(ByRef $Socket); Parameter(s): .: $Socket -; Return Value ..: Success - 1; Failure - 0; Author(s) .....: Thorsten Willert; Date ..........: Tue Apr 07 11:08:05 CEST 2009 @422 /Internet Time/; ==============================================================================Func __FFIsSocket(ByRef $Socket)Return ($Socket > 0 And IsInt($Socket))EndFunc ;==>__FFIsSocket; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFIsURL; Description ...: URL check; AutoIt Version : V3.3.0.0; Syntax ........: __FFIsURL(ByRef $URL); Parameter(s): .: $URL - http/https/ftp/about/chrome/file; Return Value ..: Success - 1; Failure - 0; Author(s) .....: Thorsten Willert; Date ..........: Tue Jul 07 11:32:45 CEST 2009; Link ..........: http://geekswithblog...2/01/61722.aspx; ==============================================================================Func __FFIsURL(ByRef $URL)Return (StringRegExp($URL, '^^((ht|f)tp(s?)\:\/\/|~/|/)([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?') Or _ StringRegExp($URL, '^^((ht|f)tp(s?)\:\/\/|~/|/)(\d{1,3}\.){3}\d{1,3}(:[\d]{1,5})?(/.*)?$') Or _ StringLeft($URL, 6) = "about:" Or _ StringLeft($URL, 7) = "chrome:" Or _ StringLeft($URL, 10) = "localhost:" Or _ StringLeft($URL, 8) = "file:///")EndFunc ;==>__FFIsURLFunc __FFCheckURL(ByRef $URL)If Not __FFIsURL($URL) Then If Not StringRegExp($URL, '^((ht|f)tp(s?)\:\/\/|~/|/)') Then $URL = "http://" & $URLEndIfReturn __FFIsURL($URL)EndFunc ;==>__FFCheckURL; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFB2S; Description ...: Bool to string; AutoIt Version : V3.3.0.0; Syntax ........: __FFB2S($bBool); Parameter(s): .: $bBool - true / false; Return Value ..: Success - String "true" or "false"; Failure - ""; Author(s) .....: Thorsten Willert; Date ..........: Sun Feb 15 00:26:46 CET 2009; ==============================================================================Func __FFB2S($bBool)If $bBool Then Return "true"Else Return "false"EndIfEndFunc ;==>__FFB2S; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFValue2JavaScript; Description ...:; AutoIt Version : V3.3.0.0; Syntax ........: __FFValue2JavaScript(ByRef $sValue); Parameter(s): .: $sValue -; Return Value ..: Success -; Failure -; Author(s) .....: Thorsten Willert; Date ..........: Mon Apr 13 15:42:21 CEST 2009; ==============================================================================Func __FFValue2JavaScript(ByRef $sValue)If $sValue = "" Then Return ""Local $sTmp = "", $c$sValue = StringRegExpReplace($sValue, '([\\"''])', '\\$1')$sValue = StringReplace($sValue, @CRLF, "\n")$sValue = StringReplace($sValue, @CR, "\r")$sValue = StringReplace($sValue, @TAB, "\t")If StringRegExp($sValue, "[^\x00-\x7F]", 0) Then For $i = 0 To StringLen($sValue) $c = StringMid($sValue, $i, 1) If StringRegExp($c, "[^\x00-\x7F]", 0) Then $c = StringFormat("\\u%0000s", Hex(AscW($c), 4)) $sTmp &= $c Next $sValue = $sTmpEndIfReturn $sValueEndFunc ;==>__FFValue2JavaScript; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFSendJavaScripts; Description ...: JavaScript functions; AutoIt Version : V3.3.0.0; Syntax ........: __FFSendJavaScripts([$bRefresh = true[, $bTrace = False]]); Parameter(s): .: $bRefresh - Optional: (Default = false) : Send again to FF; Return Value ..: Success - 1; Failure - 0; Author(s) .....: Thorsten Willert; Date ..........: Wed Dec 02 17:50:27 CET 2009; Link ..........: http://developer.moz....initMouseEvent; ==============================================================================Func __FFSendJavaScripts($bRefresh = True, $bTrace = False)Local $bTrc = $_FF_COM_TRACE$_FF_COM_TRACE = $bTraceIf _FFCmd("repl.search(/FFau3/i)", 3000) = "FFau3" And Not $bRefresh Then $_FF_COM_TRACE = $bTrace Return 1EndIfIf $bRefresh Then _FFCmd('try{delete FFau3;}catch(e){e};')ConsoleWrite("__FFSendJavaScripts: Sending functions to FireFox .")_FFCmd('FFau3=new Object();FFau3.tmp="";FFau3.obj=null;FFau3.WCD=window.content.top.document;')ConsoleWrite("."); sEvent = MouseEvents | KeyboardEvent | Event; sType:; MouseEvents: click; KeyboardEvent: keyup | keydown | keypress; Event: change | select | focus | blur | resize; args: oObject, sEvent, sType[, Key[, X[ ,Y]]]; key = dec-ASCII-code; X = clientX; Y = clientY_FFCmd('FFau3.simulateEvent=function simulateEvent(a,b,c){try{var d=document.createEvent(B);switch(B){case"MouseEvents":D.initMouseEvent(c,true,true,window,0,0,0,simulateEvent.arguments[4],simulateEvent.arguments[5],false,false,false,false,0,null);break;case"KeyboardEvent":D.initKeyEvent(c,true,true,null,false,false,false,false,simulateEvent.arguments[3],0);break;case"Event":D.initEvent(c,true,true);break}a.dispatchEvent(d);return 1}catch(e){return-3}return 0};')#cs_FFCmd('FFau3.simulateEvent=function simulateEvent(oObject,sEvent,sType){' & _ 'try{ var evt=document.createEvent(sEvent);' & _ 'switch(sEvent){' & _ ' case "MouseEvents":' & _ ' evt.initMouseEvent(sType,true,true,window,0,0,0,simulateEvent.arguments[4],simulateEvent.arguments[5],false,false,false,false,0,null);break;' & _ ' case "KeyboardEvent":' & _ ' evt.initKeyEvent(sType,true,true,null,false,false,false,false,simulateEvent.arguments[3],0);break;' & _ ' case "Event":' & _ ' evt.initEvent(sType,true,true);break; }' & _ 'oObject.dispatchEvent(evt);' & _ 'return 1;' & _ '}catch(e){return -3;}return 0;};')#ceConsoleWrite("."); GetLinkInfo(): JavaScript to get all informations about a link_FFCmd('FFau3.GetLinkInfo=function GetLinkInfo(i,a){var b="";with(FFau3.WCD){try{b=links.href+a;b+=links.hash+a;b+=links.search+a;b+=links.name+a;b+=links.id+a;b+=links.text+a;b+=links.innerHTML+a;b+=(links.hasAttribute("target")?links.target+a:a);b+=links.protocol+a;b+=links.port;return b.replace(/[\s]+/g," ")}catch(e){return-3}}};')#cs_FFCmd('FFau3.GetLinkInfo = function GetLinkInfo(i,sLimiter)' & _ '{ var info=""; with(FFau3.WCD) {' & _ 'try {' & _ 'info = links.href + sLimiter;' & _ 'info += links.hash + sLimiter;' & _ 'info += links.search + sLimiter;' & _ 'info += links.name + sLimiter;' & _ 'info += links.id + sLimiter;' & _ 'info += links.text + sLimiter;' & _ 'info += links.innerHTML + sLimiter;' & _ 'info += (links.hasAttribute("target") ? links.target + sLimiter : sLimiter);' & _ 'info += links.protocol + sLimiter;' & _ 'info += links.port;' & _ 'return info.replace(/[\s]+/g," ");' & _ '}catch(e){return -3;}' & _ '}};')#ceConsoleWrite("."); GetLinks(): JavaScript to get an information of all links_FFCmd('FFau3.GetLinks=function GetLinks(a){var b="";with(FFau3.WCD){try{for(var i=0;i<links.length;i++){b+=this.GetLinkInfo(i,a)+"\n"}return b}catch(e){return-3}}};')#cs_FFCmd('FFau3.GetLinks = function GetLinks(sLimiter)' & _ '{ var res=""; with(FFau3.WCD) {try{' & _ 'for (var i=0;i<links.length;i++){res += this.GetLinkInfo(i,sLimiter) + "\n";}' & _ 'return res; } catch(e) {return -3;}}};')#ceConsoleWrite("."); SearchImageBySize(): JavaScript_FFCmd('FFau3.SearchImageBySize=function SearchImageBySize(a,b,c,d){var e="";with(FFau3.WCD){for(var i=0;i<images.length;i++){var f=images.width;var g=images.height;switch?{case"eq":if((f<=b+b/100*d&&g<=a+a/100*d&&f>=b-b/100*d&&g>=a-a/100*d))e+=" "+i;break;case"lt":if((f<=b&&g<=a)&&(f>=b-b/100*d&&g>=a-a/100*d))e+=" "+i;break;case"gt":if((f>=b&&g>=a)&&(f<=b+b/100*d&&g<=a+a/100*d))e+=" "+i;break;default:return-1}}return e}};')#cs_FFCmd('FFau3.SearchImageBySize = function SearchImageBySize(iH, iW, sMode, iP){' & _ 'var sRet=""; with(FFau3.WCD) {' & _ 'for (var i=0;i<images.length;i++){' & _ 'var iWidth=images.width;' & _ 'var iHeight=images.height;' & _ 'switch (sMode) {' & _ 'case "eq": if ((iWidth<=iW+iW/100*iP && iHeight<=iH+iH/100*iP && iWidth>=iW-iW/100*iP && iHeight>=iH-iH/100*iP)) sRet += " " + i; break;' & _ 'case "lt": if ((iWidth<=iW && iHeight<=iH) && (iWidth>=iW-iW/100*iP && iHeight>=iH-iH/100*iP)) sRet += " " + i; break;' & _ 'case "gt": if ((iWidth>=iW && iHeight>=iH) && (iWidth<=iW+iW/100*iP && iHeight<=iH+iH/100*iP)) sRet += " " + i; break;' & _ 'default: return -1}' & _ '} return sRet; } };')#ceConsoleWrite(".")_FFCmd('FFau3.findPos=function findPos(a){try{var b=c=0;if(a.offsetParent){do{b+=a.offsetLeft;c+=a.offsetTop}while(a=a.offsetParent);return b+" "+c}}catch(e){return-3}}')#cs_FFCmd("FFau3.findPos = function findPos(obj){try{" & _ "var curleft=c=0;" & _ "if (obj.offsetParent) {" & _ "do {curleft+=obj.offsetLeft;" & _ " c+=obj.offsetTop;" & _ "} while (obj=obj.offsetParent);" & _ "return curleft+' '+c;" & _ "}}catch(e){return -3}}")#ceConsoleWrite("."); SearchTab(); JavaScript to search a tab by label_FFCmd('FFau3.SearchTab=function SearchTab(a){try{for(var i=0;i<gBrowser.mTabs.length;i++){if(RegExp(a).test(gBrowser.mTabs.label))return i};return-1}catch(e){return-3}};')#cs_FFCmd('FFau3.SearchTab = function SearchTab(RegEx)' & _ '{try{' & _ 'for (var i=0;i<gBrowser.mTabs.length;i++){' & _ 'if (RegExp(RegEx).test(gBrowser.mTabs.label)) return i;};' & _ 'return -1;}catch(e){return -3;}};')#ceConsoleWrite("."); CloseWin()_FFCmd('FFau3.CloseWin=function CloseWin(a,B){var c;var d=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser");while(d.hasMoreElements()){c=d.getNext();switch(B){case"title":if(c.title.indexOf(a)!=-1){c.close();return 1};break;case"label":if(FFau3.SearchTab(a)>-1){c.close();return 1};break;case"href":if(c.content.document.location.href.indexOf(a)!=-1){c.close();return 1}break;default:return-1}}return-1};')#cs_FFCmd('FFau3.CloseWin = function CloseWin(sSearch,sMode){' & _ 'var win;var enum = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser");' & _ 'while(enum.hasMoreElements() ){' & _ 'win=enum.getNext();' & _ 'switch(sMode){' & _ 'case "title": if (win.title.indexOf(sSearch) != -1){win.close();return 1;};break;' & _ 'case "label": if (FFau3.SearchTab(sSearch)>-1){win.close();return 1;};break;' & _ 'case "href": if (win.content.document.location.href.indexOf(sSearch) != -1){win.close();return 1;}break;' & _ 'default: return -1;' & _ '}}return -1;};')#ceConsoleWrite("."); SelectWin()_FFCmd('FFau3.SelectWin=function SelectWin(a,b,c){var d;var e=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator?;while(e.hasMoreElements()){d=e.getNext();switch(B){case"title":if(d.title.indexOf(a)!=-1){repl.enter(d);return 1};break;case"label":if(FFau3.SearchTab(a)>-1){repl.enter(d);return 1};break;case"href":if(d.content.document.location.href.indexOf(a)!=-1){repl.enter(d);return 1};break;default:return-1}}return-1};')#cs_FFCmd('FFau3.SelectWin = function SelectWin(sSearch,sMode,sType){' & _ 'var win;var enum = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator(sType);' & _ 'while(enum.hasMoreElements() ){' & _ 'win=enum.getNext();' & _ 'switch(sMode){' & _ 'case "title": if (win.title.indexOf(sSearch) != -1){repl.enter(win);return 1;};break;' & _ 'case "label": if (FFau3.SearchTab(sSearch)>-1){repl.enter(win);return 1;};break;' & _ 'case "href": if (win.content.document.location.href.indexOf(sSearch) != -1){repl.enter(win);return 1;};break;' & _ 'default: return -1};' & _ '}return -1;};')#ceConsoleWrite(". done" & @CRLF)$_FF_COM_TRACE = $bTrcReturn 1EndFunc ;==>__FFSendJavaScripts; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFWaitForRepl; Description ...:; AutoIt Version : V3.3.0.0; Syntax ........: __FFWaitForRepl($iTimeOut); Parameter(s): .: $iTimeOut; Return Value ..: Success - Return value from MozRepl; Failure - ""; @ERROR -; Author(s) .....: Thorsten Willert; Date ..........: Fri Dec 04 11:48:08 CET 2009; ==============================================================================Func __FFWaitForRepl($iTimeOut)Local Const $sFuncName = @CRLF & "__FFWaitForRepl"Local $recv, $sRet = "", $TimeOutTimer = TimerInit()If $iTimeOut < 200 Then $iTimeOut = 200While TimerDiff($TimeOutTimer) < $iTimeOut ; connection delay Sleep($_FF_CON_DELAY) $recv = TCPRecv($_FF_GLOBAL_SOCKET, 4096) ;ConsoleWrite($recv & @CRLF) ; TCP error If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_SendRecv, "TCPRecv :" & @error)) Return "" EndIf $sRet &= $recv ; error from MozRepl If StringRegExp($recv, "!!!(.*?)(TypeError|Exception|ReferenceError):?") Then $recv = StringLeft($recv, StringInStr($recv, "location") - 1) Sleep(200) SetError(__FFError($sFuncName, $_FF_ERROR_ReplException, StringStripWS($recv, 3))) __FFSend(";") ; MozRepl-Reset Sleep(200) Return "" ElseIf StringInStr($recv, "....>") Then __FFSend(";") ; MozRepl-Reset Sleep(200) SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, "MozRepl ....>")) Return "" ElseIf StringInStr($recv, "beginning of the line to force evaluation") Then Sleep(500) ; first connection delay EndIf ; multiple connections to MozRepl (e.g repl2?> ...) If StringRegExp($recv, "repl[\d]?>") Then Return StringRegExpReplace($sRet, "repl[\d]?>", "")WEnd; TimeoutSetError(__FFError($sFuncName, $_FF_ERROR_Timeout, Round(TimerDiff($TimeOutTimer)) & "ms > " & $iTimeOut & "ms $iTimeOut"))Return ""EndFunc ;==>__FFWaitForRepl; #INTERNAL_USE_ONLY# ==========================================================; Name ..........: __FFStartProcess; Description ...: Starts the firefox.exe; AutoIt Version : V3.3.0.0; Syntax ........: __FFStartProcess([$sURL = "about:blank"[, $bNewWin = False[, $sProfile = "default"[, $bNoRemote = False[, $bHide = False[, $iPort = 4242[, $iTimeOut = 30000]]]]]]]); Parameter(s): .: $sProfile - Optional: (Default = "default") :; $bNewWin - Optional: (Default = false) :; $bNoRemote - Optional: (Default = false) :; $bHide - Optional: (Default = False) :; $iPort - Optional: (Default = 4242) :; $iTimeOut - Optional: (Default = 30000) : min. 2000ms; Return Value ..: Success - 1; Failure - 0; @ERROR -; @EXTENDED - PID from the firefox.exe; Author(s) .....: Thorsten Willert; Date ..........: Wed Nov 04 16:01:59 CET 2009; ==============================================================================Func __FFStartProcess($sURL = "about:blank", $bNewWin = False, $sProfile = "default", $bNoRemote = False, $bHide = False, $iPort = 4242, $iTimeOut = 30000)Local Const $sFuncName = "__FFStartProcess"Local $PID = -1Local $sNoRemote = "", $sNewWinLocal $sProcName = $_FF_PROC_NAMEIf $sProfile = "default" Then $sProfile = ''Else $sProfile = ' -P "' & $sProfile & '"'EndIfIf $bNoRemote Then $sNoRemote = "-no-remote"If $bNewWin Then $sNewWin = "-new-window"$sURL = '"' & $sURL & '"'If $iTimeOut < 2000 Then $iTimeOut = 2000Local $sHKLM = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox"Local $sFFExe = RegRead($sHKLM & "\" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe")If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Error reading registry entry for FireFox." & @CRLF & _ "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\*CurrentVersion*\Main\PathToExe" & @CRLF & _ "Error from RegRead: " & @error)) Return 0EndIfLocal $sCommand = StringFormat('"%s" %s %s %s -repl %i %s', $sFFExe, $sNewWin, $sURL, $sNoRemote, $iPort, $sProfile)$PID = Run($sCommand)If $bHide Then BlockInput(1)Local $iTimeOutTimer = TimerInit()While 1 Sleep(2000) If ProcessExists($sProcName) Then ExitLoop If (TimerDiff($iTimeOutTimer) > $iTimeOut) Then SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Browser process not exists: " & $sProcName)) BlockInput(0) Return 0 EndIfWEndIf $bHide Then Local $WINTITLE_MATCH_MODE = AutoItSetOption("WinTitleMatchMode", 4) WinWaitActive("[CLASS:MozillaUIWindowClass]") Sleep(500) WinSetState("[CLASS:MozillaUIWindowClass]", "", @SW_MINIMIZE) BlockInput(0) AutoItSetOption("WinTitleMatchMode", $WINTITLE_MATCH_MODE)Else Sleep(1000)EndIfIf $_FF_COM_TRACE Then ConsoleWrite('__FFStartProcess: "' & $sCommand & @CRLF)SetExtended($PID)Return 1EndFunc ;==>__FFStartProcess

 

Opublikowano

Podczas przewijania tej strony zgłodniałem. Idę po kanapkę, brb.

 

@EDIT

Problem jest w funkcji _FFStartProcess. Odpal to w swoim programie ( po dodaniu include'u ).

 

 

Func __FFStartProcessQuickDebug($sURL = "about:blank", $bNewWin = False, $sProfile = "default", $bNoRemote = False, $bHide = False, $iPort = 4242, $iTimeOut = 30000)
Local Const $sFuncName = "__FFStartProcess"
Local $PID = -1
Local $sNoRemote = "", $sNewWin
Local $sProcName = $_FF_PROC_NAME
If $sProfile = "default" Then
$sProfile = ''
Else
$sProfile = ' -P "' & $sProfile & '"'
EndIf
If $bNoRemote Then $sNoRemote = "-no-remote"
If $bNewWin Then $sNewWin = "-new-window"
$sURL = '"' & $sURL & '"'
If $iTimeOut < 2000 Then $iTimeOut = 2000
Local $sHKLM = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox"
Local $sFFExe = RegRead($sHKLM & "\" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe")
ConsoleWrite("EXE: " & $sFFExe & @CRLF) ; ADDED
If @error Then
SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Error reading registry entry for FireFox." & @CRLF & _
"HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\*CurrentVersion*\Main\PathToExe" & @CRLF & _
"Error from RegRead: " & @error))
Return 0
EndIf
Local $sCommand = StringFormat('"%s" %s %s %s -repl %i %s', $sFFExe, $sNewWin, $sURL, $sNoRemote, $iPort, $sProfile)
ConsoleWrite("COMMAND: " & $sCommand & @CRLF) ; ADDED
$PID = Run($sCommand)
If $bHide Then BlockInput(1)
Local $iTimeOutTimer = TimerInit()
While 1
Sleep(2000)
If ProcessExists($sProcName) Then ExitLoop
If (TimerDiff($iTimeOutTimer) > $iTimeOut) Then
SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Browser process not exists: " & $sProcName))
BlockInput(0)
Return 0
EndIf
WEnd
If $bHide Then
Local $WINTITLE_MATCH_MODE = AutoItSetOption("WinTitleMatchMode", 4)
WinWaitActive("[CLASS:MozillaUIWindowClass]")
Sleep(500)
WinSetState("[CLASS:MozillaUIWindowClass]", "", @SW_MINIMIZE)
BlockInput(0)
AutoItSetOption("WinTitleMatchMode", $WINTITLE_MATCH_MODE)
Else
Sleep(1000)
EndIf
If $_FF_COM_TRACE Then ConsoleWrite('__FFStartProcess: "' & $sCommand & @CRLF)
SetExtended($PID)
Return 1
EndFunc ;==>__FFStartProcess

_FFStartProcessQuickDebug();

 

 

I wklej co zwróci konsola.

Ta sygnatura jest pusta.

Opublikowano

Konsola wywaliła :

>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Documents and Settings\Marek\Pulpit\Nuka nie pójdzie w las\Nowy folder\wdfasf.au3" /UserParams   
+>07:36:40 Starting AutoIt3Wrapper v.2.1.0.8    Environment(Language:0415  Keyboard:00000415  OS:WIN_XP/Dodatek Service Pack 3  CPU:X86 OS:X86)
>Running AU3Check (1.54.22.0)  from:C:\Program Files\AutoIt3
+>07:36:40 AU3Check ended.rc:0
>Running:(3.3.8.1):C:\Program Files\AutoIt3\autoit3.exe "C:\Documents and Settings\Marek\Pulpit\Nuka nie pójdzie w las\Nowy folder\wdfasf.au3"   
EXE: C:\WINDOWS\system32\plugins\Config\nowy\firefox.exe
COMMAND: "C:\WINDOWS\system32\plugins\Config\nowy\firefox.exe"  "http://ts2.travian.pl/"  -repl 4242
__FFStartProcess: ""C:\WINDOWS\system32\plugins\Config\nowy\firefox.exe"  "http://ts2.travian.pl/"  -repl 4242
+>07:36:44 AutoIT3.exe ended.rc:0
>Exit code: 0    Time: 4.710

 

Teraz 4242 otworzyło się w 2 karcie :)

Opublikowano

Stary... Ja pierdole. Zwiesiles mi komorke.

Po pierwsze da te biblioteke w spoiler.

Po drugie nie dubluj postow, jest opcja edytuj.

Po trzecie mnie tez tak wywalalo, w takie rzeczy baw sie lepiej w ie

9obpmnjr.png

Opublikowano

Prosze... na gotowca prawie (ale tu do desert operations testowalem). Bry za tyle includów ale to koda wrzuciła...

 

#include <IE.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Logowanie", 234, 114, 345, 236)
$Label1 = GUICtrlCreateLabel("Login:", 8, 8, 33, 17)
$Input1 = GUICtrlCreateInput("Tu wpisz login...", 8, 32, 113, 21)
$Label2 = GUICtrlCreateLabel("Hasło:", 8, 56, 36, 17)
$Input2 = GUICtrlCreateInput("Tu wpisz hasło...", 8, 80, 113, 21)
$Button1 = GUICtrlCreateButton("Zaloguj!", 128, 8, 97, 97)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
 Case $GUI_EVENT_CLOSE
  Exit
 Case $Button1
  $oIE=_IECreate("http://www.desert-operations.pl/portal.html")
  Sleep(3000)
   $login = GUICtrlRead($Input1)
   $haslo = GUICtrlRead($Input2)
    $oForm = _IEFormGetObjByName($oIE, 0)
 $oUser = _IEGetObjByName($oForm, "email")
	   _IEFormElementSetValue ($oUser, $login)
 $oPass = _IEGetObjByName($oForm, "password")
   _IEFormElementSetValue ($oPass, $haslo)
  _IEFormSubmit($oForm,0)
EndSwitch
WEnd

9obpmnjr.png

Opublikowano

mówiłem że mi jakiś błąd w ie.au3 wywala poczytaj sobie mój post

 

To może napisałbyś jaki błąd, lub zaktualizował przeglądarkę IE jak masz starą?

9obpmnjr.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...