kcvinu Posted August 1, 2016 Share Posted August 1, 2016 No.. no.. no way.. check and post your last code here Spoiler My Contributions Glance GUI Library - A gui library based on Windows api functions. Written in Nim programming language. UDF Link Viewer --- A tool to visit the links of some most important UDFs Includer_2 ----- A tool to type the #include statement automatically Digits To Date ----- date from 3 integer values PrintList ----- prints arrays into console for testing. Alert ------ An alternative for MsgBox MousePosition ------- A simple tooltip display of mouse position GRM Helper -------- A littile tool to help writing code with GUIRegisterMsg function Access_UDF -------- An UDF for working with access database files. (.*accdb only) Link to comment Share on other sites More sharing options...
trof Posted August 1, 2016 Author Share Posted August 1, 2016 If I run this script expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.2 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") if "Installazione di in corso ..." = $sTitle then WinWait("Installazione di in corso", "InstallShield Wizard per CyberLink") WinActivate("Installazione di in corso", "InstallShield Wizard per CyberLink") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "Contratto di Licenza per l'Utente") ControlClick("Installazione di in corso", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") if $aArray[$i]="Informazioni sul cliente" then ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") else WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") EndIf Next Else WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") if $aArray[$i]="Informazioni sul cliente" then ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") else WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") EndIf Next EndIf Next I have only one popup if I run this script expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.2 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") if "Installazione di in corso ..." = $sTitle then WinWait("Installazione di in corso", "InstallShield Wizard per CyberLink") WinActivate("Installazione di in corso", "InstallShield Wizard per CyberLink") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "Contratto di Licenza per l'Utente") ControlClick("Installazione di in corso", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next Else WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 to $aArray[0 Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next EndIf Next I don't have any popup if I run this script expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.2 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") if "Installazione di in corso ..." = $sTitle then WinWait("Installazione di in corso", "InstallShield Wizard per CyberLink") WinActivate("Installazione di in corso", "InstallShield Wizard per CyberLink") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "Contratto di Licenza per l'Utente") ControlClick("Installazione di in corso", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 to $aArray[0] ; That means loop 1 to 14 Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next For $i = 1 To $aArray[0] ; Loop through the array returned by StringSplit to display the individual values. MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i]) if $aArray[$i]="Informazioni sul cliente" then ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") else WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") EndIf Next Else WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 to $aArray[0] ; That means loop 1 to 14 Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next For $i = 1 To $aArray[0] ; Loop through the array returned by StringSplit to display the individual values. MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i]) if $aArray[$i]="Informazioni sul cliente" then ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") else WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") EndIf Next EndIf Next I have a popup for every phrase of Visible Text Link to comment Share on other sites More sharing options...
kcvinu Posted August 1, 2016 Share Posted August 1, 2016 I just use tidy on your code. Now it is properly indented. expandcollapse popup;Url: https://www.autoitscript.com/forum/topic/183850-wingettextactive-function/?page=4#comment-1320596 ;Title: WinGetText("[ACTIVE]") function - Page 4 - AutoIt General Help and Support - AutoIt Forums ;AutoIt Code Runner by DanyFirex and Dany3j :) #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.2 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") If "Installazione di in corso ..." = $sTitle Then WinWait("Installazione di in corso", "InstallShield Wizard per CyberLink") WinActivate("Installazione di in corso", "InstallShield Wizard per CyberLink") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "Contratto di Licenza per l'Utente") ControlClick("Installazione di in corso", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 To $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next Else WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite($sText) Local $aArray = StringSplit($sText, @CRLF) For $i = 1 To $aArray[0 Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next EndIf Next 1. Why did you use For loop when $aArray have just one element ? I think that first for loop is unnecessary. 2. Why don't you use proper error checking in every new steps. Use consolewrite for error checking so that you can verify that you will pass each step successfully. That will help you to find where is the actual problem lies. 3. You have used ConsoleWrite two times in this but that is not the proper use. This is how you use console write; ConsoleWrite("Some Text to identify the area --- " & $Variable_Name & @CRLF) By this method, you can read all problems from console. Spoiler My Contributions Glance GUI Library - A gui library based on Windows api functions. Written in Nim programming language. UDF Link Viewer --- A tool to visit the links of some most important UDFs Includer_2 ----- A tool to type the #include statement automatically Digits To Date ----- date from 3 integer values PrintList ----- prints arrays into console for testing. Alert ------ An alternative for MsgBox MousePosition ------- A simple tooltip display of mouse position GRM Helper -------- A littile tool to help writing code with GUIRegisterMsg function Access_UDF -------- An UDF for working with access database files. (.*accdb only) Link to comment Share on other sites More sharing options...
trof Posted August 1, 2016 Author Share Posted August 1, 2016 expandcollapse popup#RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") if "Installazione di in corso ..." = $sTitle then WinWait("Installazione di in corso", "InstallShield Wizard per CyberLink") WinActivate("Installazione di in corso", "InstallShield Wizard per CyberLink") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "Contratto di Licenza per l'Utente") ControlClick("Installazione di in corso", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite("WinGetText" & $sText & @CRLF) Local $aArray = StringSplit($sText, @CRLF) ConsoleWrite("StringSplit" & $aArray & @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next For $i = 1 To $aArray[0] MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i]) if $aArray[$i]="Informazioni sul cliente" then ConsoleWrite("if array" & $aArray[$i] & @CRLF) ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") else WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") EndIf Next Else WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite("WinGetText" & $sText & @CRLF) Local $aArray = StringSplit($sText, @CRLF) ConsoleWrite("StringSplit" & $aArray & @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next For $i = 1 To $aArray[0] MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i]) if $aArray[$i]="Informazioni sul cliente" then ConsoleWrite("if array" & $aArray[$i] & @CRLF) ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") else WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") EndIf Next EndIf Next No ConsoleWrite output Is this right? ConsoleWrite("if array" & $aArray[$i] & @CRLF) (line 32 and 67) Link to comment Share on other sites More sharing options...
kcvinu Posted August 1, 2016 Share Posted August 1, 2016 1 hour ago, trof said: ConsoleWrite("StringSplit" & $aArray & @CRLF) This is wrong. You need to check either array is populated or any specific element. May be checking Ubound of that array is good. We will know that if the array is populated properly. And checking the length of array element is unnecessary here. Because it is not your aim. I said it because we need to make sure both strings has same length. Here, we don't need that. And please write a ConsoleWrite function right after your "Else" statement. Make sure that code is properly indented. Use Tidy (Ctrl + T) for it. Spoiler My Contributions Glance GUI Library - A gui library based on Windows api functions. Written in Nim programming language. UDF Link Viewer --- A tool to visit the links of some most important UDFs Includer_2 ----- A tool to type the #include statement automatically Digits To Date ----- date from 3 integer values PrintList ----- prints arrays into console for testing. Alert ------ An alternative for MsgBox MousePosition ------- A simple tooltip display of mouse position GRM Helper -------- A littile tool to help writing code with GUIRegisterMsg function Access_UDF -------- An UDF for working with access database files. (.*accdb only) Link to comment Share on other sites More sharing options...
AutoBert Posted August 1, 2016 Share Posted August 1, 2016 2 hours ago, trof said: No ConsoleWrite output Then use _FileWriteLog to catch informations for debuging or Install the newest Scite for AutoIt. trof 1 Link to comment Share on other sites More sharing options...
junkew Posted August 1, 2016 Share Posted August 1, 2016 For getting the job done stringinstr probably easier then the stringsplit with looping the array. trof 1 FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
trof Posted August 1, 2016 Author Share Posted August 1, 2016 I installed new Scite (thanks to AutoBert) and now I have ConsoleWrite output For this script expandcollapse popup#RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") if "Installazione di in corso ..." = $sTitle then WinWait("Installazione di in corso", "InstallShield Wizard per CyberLink") WinActivate("Installazione di in corso", "InstallShield Wizard per CyberLink") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "Contratto di Licenza per l'Utente") ControlClick("Installazione di in corso", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite("WinGetText" & $sText & @CRLF) Local $aArray = StringSplit($sText, @CRLF) ConsoleWrite("StringSplit" & $aArray & @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next For $i = 1 To $aArray[0] MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i]) if $aArray[$i]="Informazioni sul cliente" then ConsoleWrite("if array" & $aArray[$i] & @CRLF) ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") else WinWaitActive("Installazione di in corso", "Cartella di destinazione") ControlClick("Installazione di in corso", "", "Button1") WinWaitActive("Installazione di in corso", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di in corso", "", "Button2") WinWaitActive("Installazione di in corso", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di in corso", "", "Button4") EndIf Next Else ConsoleWrite("else" & $sTitle & @CRLF) WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite("WinGetText" & $sText & @CRLF) Local $aArray = StringSplit($sText, @CRLF) ConsoleWrite("StringSplit" & $aArray & @CRLF) For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next For $i = 1 To $aArray[0] MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i]) if $aArray[$i]="Informazioni sul cliente" then ConsoleWrite("if array" & $aArray[$i] & @CRLF) ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") else WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") EndIf Next EndIf Next I have this output elseInstallazione di CyberLink Brush 16x9 1.0 in corso ... WinGetText Digitare il proprio nome e il nome della propria società. &Nome utente: Ottavio Nome &società: Company < &Indietro &Avanti > Annulla Informazioni sul cliente Digitare i propri dati. StringSplit As you can see StringSplit is blank. This is very strange because For $i = 1 to $aArray[0] Local $iLength = StringLen($aArray[$i]) MsgBox($MB_SYSTEMMODAL, "", "The length of this string is " & $iLength & " characters.") Next uses the $aArray variable. It isn't blank and it follows StringSplit Link to comment Share on other sites More sharing options...
trof Posted August 1, 2016 Author Share Posted August 1, 2016 This script works well. I used stringinstr (thanks to junkew) expandcollapse popup#RequireAdmin #include <MsgBoxConstants.au3> #include <StringConstants.au3> $sUserName = @UserName Local $aArray[1] $aArray[0] = "Brush.exe" For $vElement In $aArray Run($vElement) WinWait("Seleziona la lingua dell'installazione") WinActivate("Seleziona la lingua dell'installazione") ControlClick("Seleziona la lingua dell'installazione", "", "Button1") WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink", 10) Local $sTitle = WinGetTitle("[ACTIVE]") if "Installazione di in corso ..." = $sTitle then WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite("WinGetText" & $sText & @CRLF) if StringInStr($sText, "Informazioni sul cliente") = "136" then ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") else WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") EndIf Else ConsoleWrite("else" & $sTitle & @CRLF) WinWait("Installazione di CyberLink", "InstallShield Wizard per CyberLink") WinActivate("Installazione di CyberLink", "InstallShield Wizard per CyberLink") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "Contratto di Licenza per l'Utente") ControlClick("Installazione di CyberLink", "", "Button2") Sleep(3000) $sText = WinGetText("[ACTIVE]") ConsoleWrite("WinGetText" & $sText & @CRLF) if StringInStr($sText, "Informazioni sul cliente") = "136" then ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") else WinWaitActive("Installazione di CyberLink", "Cartella di destinazione") ControlClick("Installazione di CyberLink", "", "Button1") WinWaitActive("Installazione di CyberLink", "L'installazione aggiungerà le icone dei programmi") ControlClick("Installazione di CyberLink", "", "Button2") WinWaitActive("Installazione di CyberLink", "Il Setup ha completato l'installazione CyberLink") ControlClick("Installazione di CyberLink", "", "Button4") EndIf EndIf Next However, I'd like to use stringsplit and I'd like to understand why it doesn't work. Link to comment Share on other sites More sharing options...
kcvinu Posted August 1, 2016 Share Posted August 1, 2016 ConsoleWrite("StringSplit" & $aArray & @CRLF) This line is waste. What are you trying to write in console by using this line ? A whole array ?. I said you to check the array is populated by using ubound key word. So that you will know if the array has all the elements. like this ConsoleWrite("THis is array's element count - " & Ubound($aArray) & @CRLF) And creating a variable inside a loop is bad practice. Declare the variable above the for loop. trof 1 Spoiler My Contributions Glance GUI Library - A gui library based on Windows api functions. Written in Nim programming language. UDF Link Viewer --- A tool to visit the links of some most important UDFs Includer_2 ----- A tool to type the #include statement automatically Digits To Date ----- date from 3 integer values PrintList ----- prints arrays into console for testing. Alert ------ An alternative for MsgBox MousePosition ------- A simple tooltip display of mouse position GRM Helper -------- A littile tool to help writing code with GUIRegisterMsg function Access_UDF -------- An UDF for working with access database files. (.*accdb only) Link to comment Share on other sites More sharing options...
trof Posted August 1, 2016 Author Share Posted August 1, 2016 Also, I'd like to remove initial array Local $aArray[18] $aArray[0] = "Around the World.exe" $aArray[1] = "Autumn Romance.exe" $aArray[2] = "Baby.exe" $aArray[3] = "Birthday Jolly.exe" $aArray[4] = "Brush.exe" $aArray[5] = "Eternal Love.exe" $aArray[6] = "Green Clover.exe" $aArray[7] = "Interaction.exe" $aArray[8] = "Lovely Day.exe" $aArray[9] = "LowerThird 1.exe" $aArray[10] = "LowerThird 2.exe" $aArray[11] = "Rainbow Delights.exe" $aArray[12] = "Road Trip.exe" $aArray[13] = "True Love.exe" $aArray[14] = "Under the Sea.exe" $aArray[15] = "Vintage Memories.exe" $aArray[16] = "Frosted Glass.exe" $aArray[17] = "Tinted Glass.exe" For $vElement In $aArray Run($vElement) and I'd like to execute the script for every item present in a folder. I use in batch scripts FOR %%i in (*.exe) DO SET executable=%%i start /wait %executable% Link to comment Share on other sites More sharing options...
trof Posted August 2, 2016 Author Share Posted August 2, 2016 16 hours ago, kcvinu said: ConsoleWrite("StringSplit" & $aArray & @CRLF) This line is waste. What are you trying to write in console by using this line ? A whole array ?. I said you to check the array is populated by using ubound key word. So that you will know if the array has all the elements. like this ConsoleWrite("THis is array's element count - " & Ubound($aArray) & @CRLF) And creating a variable inside a loop is bad practice. Declare the variable above the for loop. THis is array's element count - 14 Link to comment Share on other sites More sharing options...
junkew Posted August 3, 2016 Share Posted August 3, 2016 https://www.autoitscript.com/autoit3/docs/libfunctions/_FileListToArray.htm and for stringinstr check on greater than 0. Exact match on 136 is risky if string is at other position. trof 1 FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
trof Posted August 3, 2016 Author Share Posted August 3, 2016 Thanks, that's what I need. Regarding _FileListToArray is it possible recurse subfolders? Link to comment Share on other sites More sharing options...
junkew Posted August 4, 2016 Share Posted August 4, 2016 trof 1 FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now