Jump to content

None of Mouse Click function working. Please help.


rick00
 Share

Recommended Posts

Hi,

I'm trying to automate a application setup but none of the function is working for mouse click. I'm using this code:

Run("recuva.exe")
WinWaitActive("recuva", "Terms of Use")
MouseClick("primary", 657, 406, 10)

Is there any alternative to use mouse click without coordinates considering the EXE does not have any unique handle on 'Next' button?

I have attached the EXE, please have a look at it. I really need to do this anyhow.

Any help would be greatly appreciated.

Thanks.

recuva.exe

Link to comment
Share on other sites

Need a little more than

"the function is working"

Please look at MouseCoordMode too, look under Opt() in help file, it means you can pass coordinates

relative to the window, or client area of the window.

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

Need a little more than

"the function is working"

Please look at MouseCoordMode too, look under Opt() in to read help file, it means you can pass coordinates

relative to the window, or client area of the window.

Going to read about that. Thanks for the tip. :)

Edited by rick00
Link to comment
Share on other sites

rick00, If you are trying to automate remote installation of this product you might want to check out the "portable" version at the Piriform Web site. kylomas

Or you could just run it with the silent switch:

Run("RCSetup144.exe /S")
It is not just the Recuva, it is a Installer containing some other apps or ads that gets download upon execution. The Installer is build with DownloadMR kind of a download manager. I just want to auto click the 'Next' button 'x' times.

Please have a look at the EXE.

Thanks for your time.

Link to comment
Share on other sites

  • Developers

Please have a look at the EXE.

You will find that not too many smart people will run a posted EXE.

I for one have problems trusting myself so won't even consider trusting somebody else's script.

Jos

Edited by Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

You will find that not too many smart people will run a posted EXE.

I for one have problems trusting myself so won't even consider trusting somebody else's script.

Jos

I got a VPS if anyone is having problems trusting my script. Let me know if someone need that so that I can post. You can even take VPS for yourself as a reward. :)

Link to comment
Share on other sites

Re-distributing Recuva without Piriform's consent is again their EULA/TOS.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

I've posted this in the past...add your installer location into the "yourinstaller"...it will loop through all active child windows, as they come appear, and then loop through for certain button text, and click them in that order (first applicable)...makes things like installers a piece of cake:

#include <Array.au3>
Dim $aButtonclickOrder[8] = ["Continue", "&Continue", "OK", "&OK", "Yes", "&Yes", "Install", "&Install"]
Dim $aExpectedWindowState[3] = [1, 2, 4] ; Window exists, visible, and enabled
$PID = Run("yourinstaller")
While ProcessExists($PID)
 $bButtonclicked = False
 $aHWnds = _ProcessGetWindow($PID)
 If IsArray($aHWnds) Then
  For $i = 0 To UBound($aHWnds) - 1
   If WaitForWindowState($aHWnds[$i], $aExpectedWindowState, 0, 0) Then
    ; window exists, is visible, and is enabled.
    For $j = 0 To UBound($aButtonclickOrder) - 1
     $hButton = ControlGetHandle($aHWnds[$i], "", "[CLASS:Button; TEXT:" & $aButtonclickOrder[$j] & "]" )
     If IsHWnd($hButton) Then
      ; button exists
      If ControlCommand($aHWnds[$i], "", $hButton, "IsEnabled", "") Then
       ControlFocus($aHWnds[$i], "", $hButton)
       ControlClick($aHWnds[$i], "", $hButton)
       Sleep(2000)
       $bButtonclicked = True
       ExitLoop
      EndIf
     EndIf
    Next
    If $bButtonclicked Then ExitLoop
   EndIf
  Next
 EndIf
 Sleep(1000)
WEnd
Func _ProcessGetWindow($p_PID, $p_ReturnBestGuess = False)
 ; #FUNCTION# ============================================================================================================================
 ; Name...........: _ProcessGetWindow
 ;
 ; Description ...: Returns an array of HWNDs containing all windows owned by the process $p_PID, or optionally a single "best guess."
 ;
 ; Syntax.........: _ProcessGetWindow( $p_PID [, $p_ReturnBestGuess = False ])
 ;
 ; Parameters ....: $p_PID - The PID of the process you want the Window for.
 ;            $p_ReturnBestGuess - If True, function will return only 1 reult on a best-guess basis.
 ;                                    The "Best Guess" is the VISIBLE window owned by $p_PID with the longest title.
 ;
 ; Return values .: Success   - Return $_array containing HWND info.
 ;                                $_array[0] = Number of results
 ;                                $_array[n] = HWND of Window n
 ;
 ;            Failure  - Returns 0
 ;
 ;            Error   - Returns -1 and sets @error
 ;                                    1 - Requires a non-zero number.
 ;                                    2 - Process does not exist
 ;                                    3 - WinList() Error
 ;
 ; Author ........: Andrew Bobulsky, contact: RulerOf <at that public email service provided by Google>.
 ; Remarks .......: The reverse of WinGetProcess()
 ; =======================================================================================================================================
 Local $p_ReturnVal[1] = [0]
 Local $p_WinList = WinList()
 If @error Then ;Some Error handling
  SetError(3)
  Return -1
 EndIf
 If $p_PID = 0 Then ;Some Error handling
  SetError(1)
  Return -1
 EndIf
 If ProcessExists($p_PID) = 0 Then ;Some Error handling
  ConsoleWrite("_ProcessGetWindow: Process " & $p_PID & " doesn't exist!" & @CRLF)
  SetError(2)
  Return -1
 EndIf
 For $i = 1 To $p_WinList[0][0] Step 1
  Local $w_PID = WinGetProcess($p_WinList[$i][1])
  ; ConsoleWrite("Processing Window: " & Chr(34) & $p_WinList[$i][0] & Chr(34) & @CRLF & " with HWND: " & $p_WinList[$i][1] & @CRLF & " and PID: " & $w_PID & @CRLF)
  If $w_PID = $p_PID Then
   ;ConsoleWrite("Match: HWND " & $p_WinList[$i][1] & @CRLF)
   $p_ReturnVal[0] += 1
   _ArrayAdd($p_ReturnVal, $p_WinList[$i][1])
  EndIf
 Next
 If $p_ReturnVal[0] > 1 Then
  If $p_ReturnBestGuess Then
   Do
    Local $i_State = WinGetState($p_ReturnVal[2])
    Local $i_StateLongest = WinGetState($p_ReturnVal[1])
    Select
     Case BitAND($i_State, 2) And BitAND($i_StateLongest, 2) ;If they're both visible
      If StringLen(WinGetTitle($p_ReturnVal[2])) > StringLen(WinGetTitle($p_ReturnVal[1])) Then ;And the new one has a longer title
       _ArrayDelete($p_ReturnVal, 1) ;Delete the "loser"
       $p_ReturnVal[0] -= 1 ;Decrement counter
      Else
       _ArrayDelete($p_ReturnVal, 2) ;Delete the failed challenger
       $p_ReturnVal[0] -= 1
      EndIf
     Case BitAND($i_State, 2) And Not BitAND($i_StateLongest, 2) ;If the new one's visible and the old one isn't
      _ArrayDelete($p_ReturnVal, 1) ;Delete the old one
      $p_ReturnVal[0] -= 1 ;Decrement counter
     Case Else ;Neither window is visible, let's just keep the first one.
      _ArrayDelete($p_ReturnVal, 2)
      $p_ReturnVal[0] -= 1
    EndSelect
   Until $p_ReturnVal[0] = 1
  EndIf
  Return $p_ReturnVal
 ElseIf $p_ReturnVal[0] = 1 Then
  Return $p_ReturnVal ;Only 1 window.
 Else
  Return 0 ;Window not found.
 EndIf
EndFunc   ;==>_ProcessGetWindow
Func WaitForWindowState($hwndCallersWindow, $aCallersExpectedWindowState, $sCallersTotalWaitSeconds, $sCallersWaitChecks)
 $iTotalWaitMilSec = $sCallersTotalWaitSeconds * 1000
 $iSleepMilSec = $iTotalWaitMilSec / $sCallersWaitChecks
 ; Get states to log
 $sExpectedStates = ""
 For $i = 0 To UBound($aCallersExpectedWindowState) - 1
  Switch $aCallersExpectedWindowState[$i]
   Case 1
    $sExpectedStates = $sExpectedStates & "Exists "
   Case 2
    $sExpectedStates = $sExpectedStates & "Visible "
   Case 4
    $sExpectedStates = $sExpectedStates & "Enabled "
   Case 8
    $sExpectedStates = $sExpectedStates & "Active "
   Case 16
    $sExpectedStates = $sExpectedStates & "Minimized "
   Case 32
    $sExpectedStates = $sExpectedStates & "Maximized "
   Case Else
    ;If $lgbPerformLog Then Call("SetLogAndActOnState", 0, 2, "WaitForWindowState()", "Callers Win State=[" & $aCallersExpectedWindowState[$i] & "], but values must be in (1,2,4,8,16,32).", False, False)
    Return False
  EndSwitch
 Next
 $sExpectedStates = StringStripWS($sExpectedStates, 7) ; Strip double spaces, trailing, and leading
 For $i = 0 To $sCallersWaitChecks
  $iWinState = WinGetState($hwndCallersWindow)
  $bExpectedState = True
  For $iCurrentCheck = 0 To UBound($aCallersExpectedWindowState) - 1
   If Not BitAND($iWinState, $aCallersExpectedWindowState[$iCurrentCheck]) Then
    $bExpectedState = False
    ExitLoop
   EndIf
  Next
  If $bExpectedState Then
   ; Log State is as expected
   ;If $lgbPerformLog Then Call("SetLogAndActOnState", 2, 2, "WaitForWindowState()", "Window State=[" & $iWinState & "] matches callers expected window state[s]=[" & $sExpectedStates & "].", False, False)
   Return True
  EndIf
  Sleep($iSleepMilSec)
 Next
 ; Log State did not match expected
 ;Call("SetLogAndActOnState", 0, 2, "WaitForWindowState()", "Window State=[" & $iWinState & "] did NOT match callers expected window state[s]=[" & $sExpectedStates & "] within expected seconds=[" & $sCallersTotalWaitSeconds & "]", False, False)
 Return False
EndFunc   ;==>WaitForWindowState
Edited by jdelaney
IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Link to comment
Share on other sites

Have you not tried control* functions? why use mouseclick?

Because 'Next' button does not have any unique controlID. Below is the window info:

Title: Recuva
Class: WindowsForms10.window.8.app.0.33c0d9d
Position: 350, 51
Size: 736, 459
Style: 0x16CA0000
ExStyle: 0x00050100
Handle: 0x002C064E
>>>> Control <<<<
Class: Internet Explorer_Server
Instance: 1
ClassnameNN: Internet Explorer_Server1
Name:
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:
Text:
Position: 0, 0
Size: 730, 430
ControlClick Coords: 668, 404
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x00200272
>>>> Mouse <<<<
Position: 1021, 481
Cursor ID: 0
Color: 0xF5F5F5
>>>> StatusBar <<<<
>>>> ToolsBar <<<<
>>>> Visible Text <<<<

>>>> Hidden Text <<<<
Loading setup data
Edited by rick00
Link to comment
Share on other sites

  • Moderators

Re-distributing Recuva without Piriform's consent is again their EULA/TOS.

As is repackaging it, otherwise I would give my usual spiel about taking the time to properly package the features you want in an MSI :)

I would not install from the executable you post, personally (I'm one of the less than smart people Jos alluded to :) ). The executable reaches out to the internet and pulls down an executable (Northstar.exe) along with a dll file, and throws them into the temp directory. Everything I see regarding Northstar.exe looks to be malicious. I would highly suggest you get each of the applications you want to install from the vendor's website (as I did in post #4 to test the silent switches). This executable you have in your OP was created by Solimba Aplicaciones S.L., so my virus meter is well into the red :)

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

As is repackaging it, otherwise I would give my usual spiel about taking the time to properly package the features you want in an MSI :)

I would not install from the executable you post, personally (I'm one of the less than smart people Jos alluded to :) ). The executable reaches out to the internet and pulls down an executable (Northstar.exe) along with a dll file, and throws them into the temp directory. Everything I see regarding Northstar.exe looks to be malicious. I would highly suggest you get each of the applications you want to install from the vendor's website (as I did in post #4 to test the silent switches). This executable you have in your OP was created by Solimba Aplicaciones S.L., so my virus meter is well into the red :)

NO, no virus at all, it just downloads some Adware or ads as you can see while running the installer. You can see Solimba Aplicaciones S.L. is an affiliate network. I can PM you VPS running Autoit so that you can confirm. Let me know.

Edited by rick00
Link to comment
Share on other sites

I've posted this in the past...add your installer location into the "yourinstaller"...it will loop through all active child windows, as they come appear, and then loop through for certain button text, and click them in that order (first applicable)...makes things like installers a piece of cake:

#include <Array.au3>
Dim $aButtonclickOrder[8] = ["Continue", "&Continue", "OK", "&OK", "Yes", "&Yes", "Install", "&Install"]
Dim $aExpectedWindowState[3] = [1, 2, 4] ; Window exists, visible, and enabled
$PID = Run("yourinstaller")
While ProcessExists($PID)
$bButtonclicked = False
$aHWnds = _ProcessGetWindow($PID)
If IsArray($aHWnds) Then
For $i = 0 To UBound($aHWnds) - 1
If WaitForWindowState($aHWnds[$i], $aExpectedWindowState, 0, 0) Then
    ; window exists, is visible, and is enabled.
    For $j = 0 To UBound($aButtonclickOrder) - 1
     $hButton = ControlGetHandle($aHWnds[$i], "", "[CLASS:Button; TEXT:" & $aButtonclickOrder[$j] & "]" )
     If IsHWnd($hButton) Then
     ; button exists
     If ControlCommand($aHWnds[$i], "", $hButton, "IsEnabled", "") Then
     ControlFocus($aHWnds[$i], "", $hButton)
     ControlClick($aHWnds[$i], "", $hButton)
     Sleep(2000)
     $bButtonclicked = True
     ExitLoop
     EndIf
     EndIf
    Next
    If $bButtonclicked Then ExitLoop
EndIf
Next
EndIf
Sleep(1000)
WEnd
Func _ProcessGetWindow($p_PID, $p_ReturnBestGuess = False)
; #FUNCTION# ============================================================================================================================
; Name...........: _ProcessGetWindow
;
; Description ...: Returns an array of HWNDs containing all windows owned by the process $p_PID, or optionally a single "best guess."
;
; Syntax.........: _ProcessGetWindow( $p_PID [, $p_ReturnBestGuess = False ])
;
; Parameters ....: $p_PID - The PID of the process you want the Window for.
;            $p_ReturnBestGuess - If True, function will return only 1 reult on a best-guess basis.
;                                    The "Best Guess" is the VISIBLE window owned by $p_PID with the longest title.
;
; Return values .: Success - Return $_array containing HWND info.
;                                $_array[0] = Number of results
;                                $_array[n] = HWND of Window n
;
;            Failure - Returns 0
;
;            Error - Returns -1 and sets @error
;                                    1 - Requires a non-zero number.
;                                    2 - Process does not exist
;                                    3 - WinList() Error
;
; Author ........: Andrew Bobulsky, contact: RulerOf <at that public email service provided by Google>.
; Remarks .......: The reverse of WinGetProcess()
; =======================================================================================================================================
Local $p_ReturnVal[1] = [0]
Local $p_WinList = WinList()
If @error Then ;Some Error handling
SetError(3)
Return -1
EndIf
If $p_PID = 0 Then ;Some Error handling
SetError(1)
Return -1
EndIf
If ProcessExists($p_PID) = 0 Then ;Some Error handling
ConsoleWrite("_ProcessGetWindow: Process " & $p_PID & " doesn't exist!" & @CRLF)
SetError(2)
Return -1
EndIf
For $i = 1 To $p_WinList[0][0] Step 1
Local $w_PID = WinGetProcess($p_WinList[$i][1])
; ConsoleWrite("Processing Window: " & Chr(34) & $p_WinList[$i][0] & Chr(34) & @CRLF & " with HWND: " & $p_WinList[$i][1] & @CRLF & " and PID: " & $w_PID & @CRLF)
If $w_PID = $p_PID Then
;ConsoleWrite("Match: HWND " & $p_WinList[$i][1] & @CRLF)
$p_ReturnVal[0] += 1
_ArrayAdd($p_ReturnVal, $p_WinList[$i][1])
EndIf
Next
If $p_ReturnVal[0] > 1 Then
If $p_ReturnBestGuess Then
Do
    Local $i_State = WinGetState($p_ReturnVal[2])
    Local $i_StateLongest = WinGetState($p_ReturnVal[1])
    Select
     Case BitAND($i_State, 2) And BitAND($i_StateLongest, 2) ;If they're both visible
     If StringLen(WinGetTitle($p_ReturnVal[2])) > StringLen(WinGetTitle($p_ReturnVal[1])) Then ;And the new one has a longer title
     _ArrayDelete($p_ReturnVal, 1) ;Delete the "loser"
     $p_ReturnVal[0] -= 1 ;Decrement counter
     Else
     _ArrayDelete($p_ReturnVal, 2) ;Delete the failed challenger
     $p_ReturnVal[0] -= 1
     EndIf
     Case BitAND($i_State, 2) And Not BitAND($i_StateLongest, 2) ;If the new one's visible and the old one isn't
     _ArrayDelete($p_ReturnVal, 1) ;Delete the old one
     $p_ReturnVal[0] -= 1 ;Decrement counter
     Case Else ;Neither window is visible, let's just keep the first one.
     _ArrayDelete($p_ReturnVal, 2)
     $p_ReturnVal[0] -= 1
    EndSelect
Until $p_ReturnVal[0] = 1
EndIf
Return $p_ReturnVal
ElseIf $p_ReturnVal[0] = 1 Then
Return $p_ReturnVal ;Only 1 window.
Else
Return 0 ;Window not found.
EndIf
EndFunc ;==>_ProcessGetWindow
Func WaitForWindowState($hwndCallersWindow, $aCallersExpectedWindowState, $sCallersTotalWaitSeconds, $sCallersWaitChecks)
$iTotalWaitMilSec = $sCallersTotalWaitSeconds * 1000
$iSleepMilSec = $iTotalWaitMilSec / $sCallersWaitChecks
; Get states to log
$sExpectedStates = ""
For $i = 0 To UBound($aCallersExpectedWindowState) - 1
Switch $aCallersExpectedWindowState[$i]
Case 1
    $sExpectedStates = $sExpectedStates & "Exists "
Case 2
    $sExpectedStates = $sExpectedStates & "Visible "
Case 4
    $sExpectedStates = $sExpectedStates & "Enabled "
Case 8
    $sExpectedStates = $sExpectedStates & "Active "
Case 16
    $sExpectedStates = $sExpectedStates & "Minimized "
Case 32
    $sExpectedStates = $sExpectedStates & "Maximized "
Case Else
    ;If $lgbPerformLog Then Call("SetLogAndActOnState", 0, 2, "WaitForWindowState()", "Callers Win State=[" & $aCallersExpectedWindowState[$i] & "], but values must be in (1,2,4,8,16,32).", False, False)
    Return False
EndSwitch
Next
$sExpectedStates = StringStripWS($sExpectedStates, 7) ; Strip double spaces, trailing, and leading
For $i = 0 To $sCallersWaitChecks
$iWinState = WinGetState($hwndCallersWindow)
$bExpectedState = True
For $iCurrentCheck = 0 To UBound($aCallersExpectedWindowState) - 1
If Not BitAND($iWinState, $aCallersExpectedWindowState[$iCurrentCheck]) Then
    $bExpectedState = False
    ExitLoop
EndIf
Next
If $bExpectedState Then
; Log State is as expected
;If $lgbPerformLog Then Call("SetLogAndActOnState", 2, 2, "WaitForWindowState()", "Window State=[" & $iWinState & "] matches callers expected window state[s]=[" & $sExpectedStates & "].", False, False)
Return True
EndIf
Sleep($iSleepMilSec)
Next
; Log State did not match expected
;Call("SetLogAndActOnState", 0, 2, "WaitForWindowState()", "Window State=[" & $iWinState & "] did NOT match callers expected window state[s]=[" & $sExpectedStates & "] within expected seconds=[" & $sCallersTotalWaitSeconds & "]", False, False)
Return False
EndFunc ;==>WaitForWindowState

Not working. : (
Link to comment
Share on other sites

  • Moderators

NO, no virus at all, it just downloads some Adware or ads as you can see while running the installer. You can see Solimba Aplicaciones S.L. is an affiliate network. I can PM you VPS running Autoit so that you can confirm. Let me know.

Ok, I've only been repackaging software for a dozen years, what do I know :) Good luck.

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...