Jump to content
CodingMonkey81

SOLVED:Running an installer with a wildcard

Recommended Posts

CodingMonkey81

All,

I'm working on automating the update process for a piece of software that we use at my company. The installer file always contains the version number as a part of the file name (eg InstallFile_9342.msi) and the numbers always change with every update.

How do I use AutoIt to run the program? I know I can't use a wildcard in place of the numbers when using the "Run" command. 

I tried 

Local $aArray = _FileListToArray("C:\path\to\file", "InstallFile_*.msi", 0, 1)
Run("$aArray")

and I also tried

Local $bInstall = FileFindFirstFile("InstallFile_*.msi")
Run("$bInstall")

and neither worked. 

Can someone please point me in the right direction? I've done some searching on the forum and haven't found anyone in a similar situation before.

Thanks!

Edited by CodingMonkey81

Share this post


Link to post
Share on other sites
czardas

If the numbers are always 4 digits (or an equal number of digits), then you could just filter part of the file name (using _FileListToArray) and then use _ArraySort(). The last array element ought to be the latest version. You could try this approach to see if it works in your situation, and find out if there are any extra steps needed.

Edited by czardas
  • Like 1

Share this post


Link to post
Share on other sites
CodingMonkey81

Do you know of any "real world" examples of how to use the two functions you've mentioned?

Share this post


Link to post
Share on other sites
Earthshine

this came straight from the help file. plus in the help file you can just open and run it from autoit

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; List all the files and folders in the desktop directory using the default parameters and return the full path.
    Local $aFileList = _FileListToArray(@DesktopDir, Default, Default, True)
    If @error = 1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.")
        Exit
    EndIf
    If @error = 4 Then
        MsgBox($MB_SYSTEMMODAL, "", "No file(s) were found.")
        Exit
    EndIf
    ; Display the results returned by _FileListToArray.
    _ArrayDisplay($aFileList, "$aFileList")
EndFunc   ;==>Example

 

; using a 2D array

#include <Array.au3>

Local $avArray[5][3] = [ _
        [5, 20, 8], _
        [4, 32, 7], _
        [3, 16, 9], _
        [2, 35, 0], _
        [1, 19, 6]]

_ArrayDisplay($avArray, "$avArray BEFORE _ArraySort()")
_ArraySort($avArray, 0, 0, 0, 0)
_ArrayDisplay($avArray, "$avArray AFTER _ArraySort() ascending column 0")
_ArraySort($avArray, 0, 0, 0, 1)
_ArrayDisplay($avArray, "$avArray AFTER _ArraySort() ascending column 1")
_ArraySort($avArray, 0, 0, 0, 2)
_ArrayDisplay($avArray, "$avArray AFTER _ArraySort() ascending column 2")

 

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
CodingMonkey81

Ok. I'll have to look at this and see what I can figure out. Honestly (for the limited "coding" skills I have), it might just be easier to run the file manually.

Share this post


Link to post
Share on other sites
Earthshine
1 hour ago, CodingMonkey81 said:

Ok. I'll have to look at this and see what I can figure out. Honestly (for the limited "coding" skills I have), it might just be easier to run the file manually.

try this for a example of how to load an array and sort it. just substitute your path and your search argument into the first two arguments passed to _FileListToArray

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Local $aArray = _FileListToArray("C:\path\to\file", 'InstallFile*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;~ _ArrayDisplay ($aArray)

Local $str = "msiexec /i """ & $aArray[0] & """ /quiet /qn"
ConsoleWrite($str)
RunWait($str)

 

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
Earthshine

I just used any old msi i could get to test, but sorting descending should leave the latest version on top so then you build your installer string and run it. any questions, come on back.

the tripple """ are to encapsulate the path in double quotes, in case you have spaces in the path. The ConsoleWrite writes out what it finds in the array to help you debug in case the command is wrong. mine looked like this for a test. (I'm on fire now folks)

 

Capture.PNG

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
ViciousXUSMC

FileListToArray() works great.

I also use RegEx if I plan to only have one installer at any given time but the numbers change so that it can match any number.

 

If your version numbers end up being set in a way that you cant not always get the correct result with an ascending/descending list, use FileGetTime() and then you can sort by modified/created dates.

  • Like 1

Share this post


Link to post
Share on other sites
Earthshine

excellent point ViciousXUSMC. my best friend is also ex USMC btw


My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
CodingMonkey81
On 11/29/2017 at 9:57 AM, Earthshine said:

try this for a example of how to load an array and sort it. just substitute your path and your search argument into the first two arguments passed to _FileListToArray

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Local $aArray = _FileListToArray("C:\path\to\file", 'InstallFile*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;~ _ArrayDisplay ($aArray)

Local $str = "msiexec /i """ & $aArray[0] & """ /quiet /qn"
ConsoleWrite($str)
RunWait($str)

 

Ok. So I tried this (modifying the necessary portions) but all it does it pop up a dialog box with the information (ArrayDisplay) The display does show the correct file in row 0. I don't know how to make the "leap" from getting the information to using it.

 

Also, I removed the "/quiet /qn" flags as I need the GUI to come up.

 

Thanks!

Message Box.edigted.JPG

Edited by CodingMonkey81
Adding Screenshot

Share this post


Link to post
Share on other sites
Earthshine

that's funny.  I see something like this. I think you are feeding it a garbage path. the array display function is only called for your convenience. once closed, it builds the string and executes it. I saw garbage in your results. Don't know what to tell you. comment out the arraydisplay like this. just uncomment it if you care to see the list of msi files it finds. that's all. 

 

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Local $aArray = _FileListToArray("w:\editdocs\build", '*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;~ _ArrayDisplay ($aArray)

;~ Local $str = "msiexec /i """ & $aArray[0] & """ /quiet /qn"
Local $str = "msiexec /i """ & $aArray[0] & """
ConsoleWrite($str)
RunWait($str)

Capture.PNG

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
careca

But still, array[0] should retrieve the count, and not a path, right?

Only now noticed the sort.

" I don't know how to make the "leap" from getting the information to using it. "

What do you mean? that information is

$aArray[0]
Edited by careca

Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Share this post


Link to post
Share on other sites
Earthshine

yeah, he doesn't get that the information he wants is in $aArray[0] (element zero, first element) and that you need to construct the command to install it using msiexec as follows.

Local $str = "msiexec /i """ & $aArray[0] & """
ConsoleWrite($str)
RunWait($str)

 


My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
CodingMonkey81
On 12/6/2017 at 4:08 PM, Earthshine said:

yeah, he doesn't get that the information he wants is in $aArray[0] (element zero, first element) and that you need to construct the command to install it using msiexec as follows.

Local $str = "msiexec /i """ & $aArray[0] & """
ConsoleWrite($str)
RunWait($str)

 

If I use 

Local $str = "msiexec /i """ & $aArray[0] & """

Autoit SyntaxProdCheck throws me an error message. I have to add another " at the end for it to not error out during the check.

 

If I use this:

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Local $aArray = _FileListToArray("D:\Path\To\File", 'StaticFileName*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;_ArrayDisplay ($aArray)

;Local $str = "msiexec /i """ & $aArray[0] & """
ConsoleWrite($str)
RunWait($str)

The SyntaxProdCheck gives me a warning: "warning: $str: possibly used before declaration."

 

I'm still not sure where I'm going wrong as I'm trying (and failing) to understand where my issue is.

Thank you for the help in this. I do want to learn this even if it's a bit over my head.

Share this post


Link to post
Share on other sites
Earthshine
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Local $aArray = _FileListToArray("D:\Path\To\File", 'StaticFileName*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;_ArrayDisplay ($aArray)

Local $str = "msiexec /i """ & $aArray[0] & """"
ConsoleWrite($str)
RunWait($str)

You commented out the declaration of $str in your code, and I fixed the quote thing. try that. Compare the code in your post to this post and see what a difference a stray ';' character can cause.

 

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
CodingMonkey81
On 12/6/2017 at 2:25 PM, Earthshine said:

that's funny.  I see something like this. I think you are feeding it a garbage path. the array display function is only called for your convenience. once closed, it builds the string and executes it. I saw garbage in your results. Don't know what to tell you. comment out the arraydisplay like this. just uncomment it if you care to see the list of msi files it finds. that's all. 

 

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Local $aArray = _FileListToArray("w:\editdocs\build", '*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;~ _ArrayDisplay ($aArray)

;~ Local $str = "msiexec /i """ & $aArray[0] & """ /quiet /qn"
Local $str = "msiexec /i """ & $aArray[0] & """
ConsoleWrite($str)
RunWait($str)

Capture.PNG

Ok. So, If I use this code:

 

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Local $aArray = _FileListToArray("D:\Path\To\File", 'StaticFileName*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
_ArrayDisplay ($aArray)

;Local $str = "msiexec /i """ & $aArray[0] & """
;ConsoleWrite($str)

 

I get a dialog box that does show the correct path.

Share this post


Link to post
Share on other sites
CodingMonkey81
24 minutes ago, Earthshine said:
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Local $aArray = _FileListToArray("D:\Path\To\File", 'StaticFileName*.msi', Default, True)
_ArraySort($aArray, 1) ; sorts descending, latest version on top at element 0
;_ArrayDisplay ($aArray)

Local $str = "msiexec /i """ & $aArray[0] & """"
ConsoleWrite($str)
RunWait($str)

You commented out the declaration of $str in your code, and I fixed the quote thing. try that. Compare the code in your post to this post and see what a difference a stray ';' character can cause.

 

Holy crap, it works!

If I understand this correctly (in the above code) the commented out item is the dialog box and it's being commented out because we don't see to see it but it's there for checking purposes. Right?

I somewhat understand the rest. It's taking the file(s) that it finds, sorting them with the newest on "top", write it to the $aArray function, creates  a "run" command for the msi file using the $aArray value and then runs it. 

To me this feel like learning a foreign language; when it's written out I can understand it but trying to write something from scratch that's correct is much more difficult.

 

Thank you all again!

Edited by CodingMonkey81
Grammer

Share this post


Link to post
Share on other sites
Earthshine

yes, we comment out the ArrayDisplay call. that is for testing purposes to see if we have the correct results before we fire the real function that does the work. the line 

Local $str = "msiexec /i """ & $aArray[0] & """"

declares the string variable $str and also sets it to the command that installs your desired program

let this be your first tool you have created. go forth and prosper in code. come back and start new threads for other problems! NEVER stop learning and growing yourself!

 

you CAN code! you use pseudo code methods.

describe what you want to do in bullet points even, organize according to functionality you want to provide and create more bullets underneath to flesh out your algorithm. the computer language nonsense is just syntax. once you learn AutoIt you could probably learn another language easier. my first was BASIC and Assembler for the 6809e Motorola processor (64K Color Computer, LOL)

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
careca

You had this:

;Local $str = "msiexec /i """ & $aArray[0] & """ <---- It was commented out, so not read.
ConsoleWrite($str) ;<----here you used the variable $str, but since it was not set, you got the error, it's like, it was the first time the script has "seen" that variable.
RunWait($str)

 

Edited by careca
  • Like 1

Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Share this post


Link to post
Share on other sites
Earthshine

he solved it mate


My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • tecc
      By tecc
      As explained elsewhere the idea is to highlight a phone number in an e-mail, docx or PDF and to press Capslock to get get it formatted properly and pasted into our softphone client and dial the number. Problem here is twofold:

      - the number gets pasted and dialing starts but then interrupts (as if ESC were pressed) and then immediately dialing starts again and the call goes out
      - once the number has been dialed successfully and the clipboard emptied, another press on Capslockon another highlighted phone number should do the same.
        What happens though is that this new number does get pasted but not formatted. Any idea what's wrong with my loop/function?
       
      #include <Clipboard.au3> While ProcessExists("3CXWin8Phone.exe") HotKeySet("{CAPSLOCK}", "GetNumber") WEnd Func GetNumber() Opt("SendCapslockMode",0) Send("{CAPSLOCK OFF}") Send("^c") $n = ClipGet() $n = StringRegExpReplace("0" & $n , _ '^(?:0\+49|0\d|(0)\+(\d\d))(?:\h*\(0\))?\D*0?(\d+)\D*(\d+)\D*', "0$1$2$3$4") ClipPut ($n) WinActivate("3CX - ") WinWaitActive("3CX - ") Send("^v") Sleep(500) Send("{ENTER}") ClipPut ("") EndFunc Exit  
    • diego_bihalva
      By diego_bihalva
      Hi guys!
       I'm looking for your help  
      The problem is: when I got the iFrame object at the page's source code, the return was "ok", but when I tryed to pick the iFrame's source code, the result is "nothing". Even use the _IETagNameAllGetCollection and others similar functions the result is the same: "nothing"
       
      Au3 Script:
      ... #include<IE.au3> Local $oIE = ... Local $oFrame = _IEGetObjById($oIE, "_wicket_window_3") ConsoleWrite(IsObj($oFrame) & @CRLF) ;RESULT = 1 ConsoleWrite($oFrame.outerHtml & @CRLF) ;RESULT = NOTHING Principal Page's source code:
      Note: the form tag doesn't have a ID or Name, but if I look for iFrame from $oIE source code, It's "ok". <html> ... <body> ... DIVs, INPUTS, and so forth ... <div class="wicket-modal" id="_wicket_window_0" role="dialog" aria-labelledby="Portal da Portabilidade de Crédito" style="left: 283px; top: 273.5px; width: 800px; visibility: visible; position: absolute;"> ... DIVs, INPUTS, and so forth ... <form style="border-width: 0px; margin: 0px; padding: 0px; position: static; background-color: transparent;"> ... DIVs, INPUTS, and so forth ... <iframe class="wicket_modal" id="_wicket_window_3" src="" frameborder="0" style="height: 620px;" allowtransparency="false"></iframe> ... DIVs, INPUTS, and so forth ... </form> ... DIVs, INPUTS, and so forth ... </div> ... DIVs, INPUTS, and so forth ... </body> </html>  
      iFrame's "_wicket_window_3" source code, viewed by IE Element Inspector (I WANNA GET THIS):
      <html xmlns="http://www.w3.org/1999/xhtml"><head><script src="/static/js/jquery-1.8.3.js" type="text/javascript"></script> <script src="../../wicket/resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-event-jquery-ver-1408133796000.js" type="text/javascript"></script> <script src="../../wicket/resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-ver-1408133796000.js" type="text/javascript"></script> <script src="../../wicket/resource/org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow/res/modal-ver-1408133800000.js" type="text/javascript"></script> <link href="../../wicket/resource/org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow/res/modal-ver-1408133800000.css" rel="stylesheet" type="text/css"> <script id="wicket-ajax-base-url" type="text/javascript"> /*<![CDATA[*/ Wicket.Ajax.baseUrl="ctc/portabilidadeContaSalario/detalhar?3"; /*]]>*/ </script> <script src="../../../../static/js/jquery-ui/jquery-ui.min.js" type="text/javascript"></script> <link href="../../../../static/js/jquery-ui/jquery-ui.min.css" rel="stylesheet" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="robots" content="noindex"> <link href="../../static/css/ctc.css" rel="stylesheet" type="text/css"> <link href="../../static/css/ctc_custom.css" rel="stylesheet" type="text/css"> <script src="../../static/js/deployJava.js" charset="utf-8"></script></head><body><object width="0" height="0" id="deployJavaPlugin" classid="clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA" data="data:application/x-oleobject;base64,rO/+ysfeAAAAAavN7/7cugAKAAAAAAAAAAAAAA=="></object> <script src="../../static/js/jquery-ctc.js" charset="utf-8"></script> <script src="../../static/js/signUtils.js" charset="utf-8"></script> <script src="../../static/js/json3.in.js" charset="utf-8"></script> <script src="../../static/js/menu2.js" charset="utf-8"></script> <script src="../../static/js/componentTicket.js" charset="utf-8"></script> <script src="../../static/js/appletScript.js" charset="utf-8"></script> <script src="../../static/js/biginteger/bigInteger.js" charset="utf-8"></script> <link href="../../favicon.ico" rel="icon" type="image/ico"> <script id="jquery.blockui" src="../../static/js/jquery.blockUI.js" type="text/javascript" charset="utf-8"></script> <script id="jquery.maskedinput" src="../../static/js/jquery.maskedinput-1.3.1.min.js" type="text/javascript" charset="utf-8"></script> <script id="jquery.priceformat" src="../../static/js/jquery.price_format.2.0.js" type="text/javascript" charset="utf-8"></script> <script src="/csrfTokenS" type="text/javascript"></script> <script type="text/javascript"> /*<![CDATA[*/ Wicket.Event.add(window, "domready", function(event) { Wicket.Ajax.ajax({"sc":"content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divTitle:btnRecolheAbba","c":"btnRecolheAbba4e","u":"./detalhar?3-1.IBehaviorListener.0-rootContent-BaseMainContent-BaseBlocoDireito-layoutForm-content-contentChild-contentForm-RightContent-ContentDiv-wizardPortabilidade-divTab-tabsWizard-0-tabWizard-divTabContent-divContent-tabContent-dataForm-divTitle-btnRecolheAbba","e":"click","f":"dataForm4d","m":"POST"});; $(document).ready(function(){if(isChrome()) { $('#contentChild').css({ 'border-top':'solid 1px white'});}window.scrollTo(0,0);; $("#cpfCli4f").mask("999.999.999-99",{}); $("#cpfCli4f").mask("999.999.999-99",{}); $("#TelCli50").mask("(99)99999999?9",{});}); Wicket.Ajax.ajax({"sc":"content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:containnerButtons:containerAcionsButtons:1:actionButton","c":"actionButton51","u":"./detalhar?3-1.IBehaviorListener.0-rootContent-BaseMainContent-BaseBlocoDireito-layoutForm-content-contentChild-contentForm-RightContent-ContentDiv-wizardPortabilidade-divTab-tabsWizard-0-tabWizard-divTabContent-divContent-tabContent-dataForm-containnerButtons-containerAcionsButtons-1-actionButton","e":"click","f":"dataForm4d","m":"POST"});; Wicket.Ajax.ajax({"c":"dataForm4d","u":"./detalhar?3-1.IBehaviorListener.0-rootContent-BaseMainContent-BaseBlocoDireito-layoutForm-content-contentChild-contentForm-RightContent-ContentDiv-wizardPortabilidade-divTab-tabsWizard-0-tabWizard-divTabContent-divContent-tabContent-dataForm","e":"submit","f":"dataForm4d","m":"POST"});; Wicket.Ajax.ajax({"c":"contentForm52","u":"./detalhar?3-1.IBehaviorListener.0-rootContent-BaseMainContent-BaseBlocoDireito-layoutForm-content-contentChild-contentForm","e":"submit","f":"contentForm52","m":"POST"});; Wicket.Ajax.ajax({"c":"layoutForm","u":"./detalhar?3-1.IBehaviorListener.0-rootContent-BaseMainContent-BaseBlocoDireito-layoutForm","e":"submit","f":"layoutForm","m":"POST"});; ;}); /*]]>*/ </script> <title>Portal da Portabilidade de Crédito</title> <div id="rootContent"> <div id="main" style="margin: 0px;"> <div id="corpo"> <div id="blocoDireito" style="padding: 0px; top: 0px;"> <form id="layoutForm" action="./detalhar?3-1.IFormSubmitListener-rootContent-BaseMainContent-BaseBlocoDireito-layoutForm&amp;SECURITYTOKEN=HIMY-BPSD-5C7F-20H2-XERE-E38O-YKYZ-VVB7-H53V-M9FA-B4CB-P3E6-557U-T5J7-IB1Q-N256" method="post" defaultform="true"><div style="left: -100px; top: -100px; width: 0px; height: 0px; overflow: hidden; position: absolute;"><input name="layoutForm_hf_0" id="layoutForm_hf_0" type="hidden"></div> <div id="messagePanel" style="display: none;"></div> <div id="pagina"> <div id="contentChild"> <div id="contentForm52" defaultform="true"> <div id="right" style="margin: 0px;"> <div id="conteudo" style="margin: 0px;"> <span><h3 style="margin: 0px 0px 10px; padding: 0px;"> <font color="gray">NU Portabilidade: </font>201807110000056998252 <br><font color="gray">Situação: </font>Aceite Compulsório por falta de resposta do Participante Folha de Pagamento <br><font color="gray">Data: </font>17/07/2018 <br><font color="gray">Motivo: </font>Aceite Compulsório por falta de resposta do Participante Folha de Pagamento</h3></span> <span> <div class="passos" id="divBreadCrumb53"> <div class="passo ativo"> <div class="passo numero ativo"><span>1</span></div> <div class="passoTexto"><span>Cliente</span></div> <br class="clr"> <div class="passoStatus"><span>Você está aqui</span></div> </div> <div class="passo inativo"> <div class="passo numero inativo"><span>2</span></div> <div class="passoTexto"><span>Participante</span></div> <br class="clr"> <div class="passoStatus"><span>Você está aqui</span></div> </div> </div> <div id="divTab54"> <div class="passosConteudo"> <div> <div id="AbaCliente_0" ticket="Identificação do cliente" containnerpath="AbaCliente_0" containnerid="AbaCliente_0"> <div id="dataForm4d" defaultform="true"> <table style="width: 726px;" border="0" cellspacing="0" cellpadding="0"> <tbody><tr> <td class="destaqueTb" style="width: 100%;"> <span class="tituloTb">Identificação do cliente</span> <span class="imgTb"><input name="content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divTitle:btnRecolheAbba" class="btRecolher" id="btnRecolheAbba4e" type="button"></span> </td> </tr> <tr> <td class="blocoDados2 itemVisivel" id="divContent_tabContent"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tbody><tr> <td> <div class="dados"> <span>CPF *</span><br> <input name="content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divContent:cpfCli" disabled="disabled" id="cpfCli4f" style="width: 210px;" maxlength="15" value="01234567890" ticket="CPF" mask="CPF" unmask="true" ticketpath="AbaCliente_0"> </div> </td> </tr> <tr> <td colspan="2"> <div class="dados"> <span>Nome *</span><br> <input name="content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divContent:NomCli" disabled="disabled" id="NomCli55" style="width: 550px;" type="text" maxlength="80" value="JOAO DA SILVA" ticket="Nome" ticketpath="AbaCliente_0"> </div> </td> </tr> <tr> <td> <div class="dados"> <span>Telefone</span><br> <input name="content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divContent:TelCli" disabled="disabled" id="TelCli50" style="width: 210px;" type="text" value="" ticket="Telefone" mask="TELEFONE_DDD_XSD" unmask="false" ticketpath="AbaCliente_0"> </div> </td> <td> <div class="dados"> <span>Email</span><br> <input name="content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divContent:EmailCli" disabled="disabled" id="EmailCli56" style="width: 300px;" type="text" maxlength="50" value="" ticket="Email" ticketpath="AbaCliente_0"> </div> </td> </tr> <tr> <td> <div class="dados"> <span>Código Autenticação do Beneficiário</span><br> <input name="content:contentChild:contentForm:RightContent:ContentDiv:wizardPortabilidade:divTab:tabsWizard:0:tabWizard:divTabContent:divContent:tabContent:dataForm:divContent:codigoAutenticacaoBeneficiario" disabled="disabled" id="codigoAutenticacaoBeneficiario57" style="width: 210px;" type="text" maxlength="100" value="" ticket="Código Autenticação do Beneficiário" ticketpath="AbaCliente_0"> </div> </td> </tr> </tbody></table> </td> </tr> </tbody></table> <div class="botoes"> <input name="ACTION" class="botao botaoPadrao" id="actionButton51" type="submit" value="Próximo"> </div> </div> </div> </div> </div> </div> <div class="botoes" id="divBotoes58" style="margin: -30px 0px 4px;"> </div> </span> <span></span> </div> </div> </div> </div> <div id="popUpWindow59" style="display: none;"> <div id="content5a" style="display: none;"></div> </div> <div id="popupConfirmacao5b" style="display: none;"> <div id="content5c" style="display: none;"></div> </div> </div> <input name="SECURITYTOKEN" type="hidden" value="XXXX"></form> <br class="clr"> </div> </div> </div> <script type="text/javascript"> /*<![CDATA[*/ $(document).ready(function() { setInterval(function() { var data = new Date(); var options = { year: "numeric", month: "numeric", day: "numeric" }; $('#dataHora').html(data.toLocaleTimeString("pt-BR", options)); }, 1000); }); /*]]>*/ </script> </div> <div style="display: none;"> <h1 id="blockUIView"><img width="40" height="40" style="top: 15px; position: relative;" src="../../static/imagens/big-roller.gif"><span id="messageWait">Por favor, aguarde...</span></h1> </div> <span id="confirmationDialog5d" style="display: none;"> </span> <script>var attributes = {"id":"ecpfApplet","codebase":"*","height":"1","width":"1","code":"br.org.cip.applet.EcpfApplet"}; var parameters = {"jnlp_href":"/jnlp/generator/ecpf.jnlp"}; var version = "1.6"; var applet = deployJava.runApplet(attributes,parameters,version);</script><applet width="1" height="1" id="ecpfApplet" codebase="*" code="br.org.cip.applet.EcpfApplet"><PARAM NAME="_cx" VALUE="26"><PARAM NAME="_cy" VALUE="26"> <param name="jnlp_href" value="/jnlp/generator/ecpf.jnlp"><param name="codebase_lookup" value="false"> </applet> <span id="asynchronousComponent5e" style="display: none;">Asynchronous</span> <script type="text/javascript"> /*<![CDATA[*/ /*** $(document).ready(function() { alert('Completou a renderização'); }); $("#tableRender").ready(function() { alert("Table rendered finish"); }); ****/ $.blockUI.defaults.message = $('#blockUIView'); var assyncProcess = false; $(document).ajaxStart(function() { if(!assyncProcess) $.blockUI(); }).ajaxStop(function() { if(!assyncProcess) $.unblockUI(); }); var fieldNamesError = new Array(); var fieldNamesNoError = new Array(); function fieldsDecorator(fieldError,fieldNoError) { fieldNamesError = fieldError==null?fieldNamesError:fieldError; fieldNamesNoError = fieldNoError==null?fieldNamesNoError:fieldNoError; } function decorator() { $.each(fieldNamesError, function( key, val ) { var selectorID = val;//"[ticket='"+val+"']"; $(selectorID).addClass("inputError"); }); $.each(fieldNamesNoError, function( key, val ) { var selectorID = val;//"[ticket='"+val+"']"; $(selectorID).removeClass("inputError"); }); } function isInternetExplorer() { var ie = navigator.userAgent.toString().toLowerCase().indexOf('msie')>0; return ie; } function isChrome() { var chrome = navigator.userAgent.toString().toLowerCase().indexOf('chrome')>0; return chrome; } function assynchronousProcessing(imageurl,message) { assyncProcess = true; $.unblockUI(); $.blockUI({ message: '<h1><img height="40" width="40" style="position:relative; top:15px;" src="'+imageurl+'" /> '+message+'...</h1>' }); } /*]]>*/ </script> </body></html> Well, I'll appreciate all kind of help.
      Thank you!
    • Cormin
      By Cormin
      I keep writing and deleting my code and I'm having a rough time getting something to work.. I cant for the life of me figure out how to move files from a sub folder into its parent folder. Preferably moving only one file type(*.bps) then deleting the old subfolder and all of its contents. I also want to ignore the folder named "finished"
      Here's my broken code that gets a stack overflow
      Func subfolders() $aFileList = _FileListToArray(@ScriptDir & "\Patches\", "*",2) if IsArray($aFileList) Then While $arraynumber < ($aFileList[0]+1) if StringInStr($aFileList[$arraynumber],"Finished",2) then $arraynumber = $arraynumber + 1 subfolders() Else DirMove(@ScriptDir & "\Patches\" & $aFileList[$arraynumber],@ScriptDir & "\Patches\") subfolders() EndIf WEnd EndIf endFunc $arraynumber = 1 subfolders()  
    • Fin
      By Fin
      Hello...:)
      I have done extensive searches on this issue before posting but have not found a solve. Any help will be greatly appreciated.
      ;I have a valid AutoIt support question and kindly provided the details of my system: ;AutoIt Version: V3.3.14.2 [X32] ;Windows Version: WIN_VISTA [X86] ;Language: English (0409) #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $form = GUICreate("O_o", 146, 66, -1, -1) Global $inputNorth = GUICtrlCreateInput("", 12, 24, 53, 21) Global $btnSet = GUICtrlCreateButton("Set Controls", 72, 16, 65, 33, $BS_DEFPUSHBUTTON) GUISetState(@SW_SHOW) HotKeySet("{UP}","_north") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $btnSet Global $goNorth= "-" & GUICtrlRead($inputNorth) MsgBox(0,"", "go north: " & $goNorth) Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ;functions Func _north() $pos=MouseGetPos() MouseMove($pos[0], $pos[1]$goNorth,0) ;-results in syntax error EndFunc As you can see, $goNorth gets its value from $inputNorth
      (the MsgBox shows it works)
      But I cannot get MouseMove() to take $goNorth
      If I use: MouseMove($pos[0], $pos[1]$goNorth,0) --I get a syntax error.
      If I use: MouseMove($pos[0], $pos[1] & $goNorth,0) --I no longer get a syntax error, but that's not right so the function, (likely), moves by zero.
      So is there a way I can get MouseMove() to take a variable for that parameter?
      Thank you in advance should you choose to help!
    • RHolmes
      By RHolmes
      I have a program that has a control that changes color a few seconds into running. So ideally, I would poll this to tell when an event has occurred. 
      I can't seem to retrieve the correct color value for a control. It always seems to return white indicating that its selecting somewhere else in the window.
      In the PixelGetColor call I'm adding half the width to the x value and subtracting half the height to the y value  in order to get the center of the control. (assuming the coords returned by ControlGetPos are top left - which i can't be sure of) But I've also tried without modifying the x/y and with changing the PixelCoordMode option to 2. Maybe I'm making a silly mistake and can't see it? Any help would be appreciated.
      Code is below:
      Opt("PixelCoordMode", 0)
      FileChangeDir( "C:\Where\My\File\Is" );
      Run( "MyProgram.exe" )
      Local $hClient = WinWaitActive( $CLIENT_TITLE, "", 10 )
      Local $systemIndicatorClassNN= "[CLASS:Qt5QWindowIcon; INSTANCE:99]"
      Local $hSystemIndicator = ControlGetHandle ( $hClient, "", $systemIndicatorClassNN)
      Local $xywh = ControlGetPos ( $hClient, "", $hSystemIndicator )
      For $i = 10 To 1 Step -1
            $color = PixelGetColor ( $xywh[0] + ($xywh[2]/2), $xywh[1] - ($xywh[3]/2), $hClient )
            LogToFile( $color )
            Sleep( 2000 )
      Next
×