Hardware e software > Programmazione e scripting

Sezione Autoit, Discussioni e scambio di idee...

(1/18) > >>

Yza_K:
Come da titolo, Vedrò di aiutare ( O FARMI AIUTARE ) in questo linguaggio.

DMD:
Chiedo gentilmente come utilizzare la funzione Macro Generator.

La procedura che ho eseguito è questa:
Una volta che mi sono posizionato sull'eseguibile, del software che voglio automatizzare, tasto DX>More Options>Installer Tools>AutoIt MacroGenerator.

Una volta aperta la finestra ho premuto il tatso "Rec" e avviato l'installazione del software preferito, a fine installazione, ho stoppato la registrazione e salvato il file generato.

A questo punto quale passaggio devo esguire prima di compilare lo script?


Cordialmente ringrazio

Yza_K:
Ciao DMD

Io non conosco il Macro Generator, ma se mi alleghi lo script (anche in pm) te lo controllo.

Cmq uno script in autoit va elaborato con autoit , basta installare autoit ,eseguitrlo e poi testare con F5, se va tutto bene fai l'exe con F7..



DMD:
Il programma che cerco di "automatizzare" è il noto DivX

lo script generato è questo


--- Codice: ---;--- AutoIt Macro Generator V 0.21 beta ---
Opt("WinTitleMatchMode", 4)
WinWait("Codec DivX 6.8","")
ControlClick("Codec DivX 6.8","","DirectUIHWND3")
ControlClick("Codec DivX 6.8","","DirectUIHWND3")
WinWait("Language selection","Cancel")
ControlClick("Language selection","Cancel","Button1")
WinWait("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009")
ControlClick("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009","Button2")
WinWait("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009")
ControlCommand("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button4","Check","")
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button2")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button2")
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button2")
WinWait("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009")
ControlClick("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009","Button2")
WinWait("http://go.divx.com/postinstall/win/en - Windows Internet Explorer","Navigation Bar")

;--- End ---
--- Termina codice ---




Poi cliccando con il tasto DX sull'eseguibile  More Option>InstallerToolsAutoIT Automated Script>Use WinWait In sequence ho ottenuto un'altro script che ho modificato con le righe del primo.


--- Codice: ---#region - DivXInstaller install script - (Automated with WinWait functions)

Opt('TrayIconDebug', 1)
Opt('WinDetectHiddenText', 1)
Opt('WinTitleMatchMode', 4)

; Installer.
$executable = 'DivXInstaller.exe'
; Show progess.
$splash = 0
; Default catagory folder in startmenu.
$group = ''
; New catagory to move the default folder into.
$catagory = ''
; Installation folder in Program Files.
$directory = ''

; Run the installer.
$pid = _Install()
If WinWait("Codec DivX 6.8", 60) Then
ControlClick("Language selection","Cancel","Button1")
WinWait("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009")
ControlClick("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009","Button2")
WinWait("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009")
ControlCommand("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button4","Check","")
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button2")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
;AutoIt supports no SysTreeView32
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","SysTreeView321")
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button2")
ControlClick("DivX for Windows Setup ","Copyright (c) DivX, Inc. 2009","Button2")
WinWait("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009")
ControlClick("DivX for Windows Setup","Copyright (c) DivX, Inc. 2009","Button2")
WinWait("DivX for Windows Setup","&Close")
ControlClick("DivX for Windows Setup","&Close","Button2")
WinWait("Windows Internet Explorer","Barra di spostamento")
Else
_Abort()
EndIf
ProcessWaitClose($pid)

; Remove shortcuts.
If _MainShortcut('?.lnk') Then
; Relative to shortcut directories
; Remove Startmenu shortcuts
FileDelete('?.lnk')
FileDelete('?.lnk')
FileDelete('?.lnk')
FileDelete('?.lnk')
FileDelete('?.lnk')
; Remove other shortcuts
_Desktop('?.lnk')
_QuickLaunch('?.lnk')
EndIf

#endregion

Exit

#cs - Exitcodes
1 = _Install(): Installer not found
2 = _Abort(): Installer process closed and then Abort
3 = _Abort(): Abort only
-1 = _ProcessBlock(): Blocked processes not unblocked
#ce

Func _Install($path = 'Default')
; Run the installer in Default Script directory.
Dim $splash, $processblock
If $path = 'Default' Then $path = @ScriptDir
If StringRight($path, 1) <> '\' Then $path = $path & '\'
If StringInStr($executable, '\') Then $path = ''
If Not FileExists($path & $executable) Then Exit 1
If $processblock <> '' Then Call('_' & 'ProcessBlock')
If $splash Then _Splash('Installing:' & StringTrimRight(StringReplace(@ScriptName, '_', ' '), 4))
If StringRight($executable, 3) = 'msi' Then
Return Run(@SystemDir & '\msiexec /i "' & $path & $executable & '"')
Else
Return Run($path & $executable)
EndIf
EndFunc

Func _Abort()
; close process if exists then exit.
Dim $pid
If ProcessExists($pid) Then
ProcessClose($pid)
Exit 2
Else
Exit 3
EndIf
EndFunc

Func _Desktop($shortcut)
; Delete a Desktop shortcut.
If FileExists(@DesktopDir & '\' & $shortcut) Then
Return FileDelete(@DesktopDir & '\' & $shortcut)
ElseIf FileExists(@DesktopCommonDir & '\' & $shortcut) Then
Return FileDelete(@DesktopCommonDir & '\' & $shortcut)
EndIf
EndFunc

Func _MainShortcut($shortcut, $rename = '')
; Change working directory to correct StartMenu\Group directory.
Dim $group, $catagory, $splash
If $group = '' Then Return 0
If FileExists(@ProgramsDir & '\' & $group) Then
FileChangeDir(@ProgramsDir & '\' & $group)
ElseIf FileExists(@ProgramsCommonDir & '\' & $group) Then
FileChangeDir(@ProgramsCommonDir & '\' & $group)
Else
Return 0
EndIf
; Wait for main shortcut.
If $splash Then _Splash('Waiting for shortcuts')
For $i = 1 To 20
If FileExists($shortcut) Then ExitLoop
Sleep(500)
Next
If $splash Then _Splash('Cleaning up:' & StringTrimRight(StringReplace(@ScriptName, '_', ' '), 4))
; If catagory not assigned anything, then return.
If $catagory = '' Then Return 1
; Move the group folder into the catagory folder.
If FileChangeDir('..') And DirCopy($group, $catagory & '\' & $group, 1) Then
If DirRemove($group, 1) Then
; If optional rename parameter is used, then rename the group folder.
If $rename <> '' And FileChangeDir($catagory) Then
If DirCopy($group, $rename, 1) And DirRemove($group, 1) Then
Return FileChangeDir($rename)
EndIf
Else
Return FileChangeDir($catagory & '\' & $group)
EndIf
EndIf
EndIf
EndFunc

Func _QuickLaunch($shortcut)
; Delete a Quicklaunch shortcut.
Local $subdirs = 'Microsoft\Internet Explorer\Quick Launch'
If FileExists(@AppDataDir & '\' & $subdirs & '\' & $shortcut) Then
Return FileDelete(@AppDataDir & '\' & $subdirs & '\' & $shortcut)
ElseIf FileExists(@AppDataCommonDir & '\' & $subdirs & '\' & $shortcut) Then
Return FileDelete(@AppDataCommonDir & '\' & $subdirs & '\' & $shortcut)
EndIf
EndFunc

Func _Splash($text = '')
; Shows a small borderless splash message.
Dim $splash
If $splash Then
If $text Then
SplashTextOn('', $text, 500, 25, -1, 5, 1, '', 14)
Else
SplashOff()
EndIf
EndIf
EndFunc

Func _WinClose($title, $text = '')
; Close a window with further attempts.
For $i = 1 To 10
WinClose($title, $text)
If Not WinExists($title) Then Return 1
Sleep(500)
Next
EndFunc

Func OnAutoItStart()
; A 2nd script instance will exit.
If StringInStr($CMDLINERAW, '/dummy') Then Exit
If WinExists(@ScriptName & '_Interpreter') Then Exit
AutoItWinSetTitle(@ScriptName & '_Interpreter')
EndFunc

--- Termina codice ---




Dopo ho compilato il file, ma quando lo lancio non mi attiva l'istallazione automatizzata del software preferito.

Questa procedura l'ho fatta anche per altri software e devo dire che con più di qualcuno ha funzionato, per cui non riesco a capire se con qualche programma bisogna agire in modo diverso.


Un saluto

Yza_K:
Il software che utilizzi è un pochino pasticcione, tra poco te lo faccio bene.

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa