El problema se basa en que me pide que declare arrays pero no se como, sucede que todo marcha bien pero cuando hago clic en el boton desinstalar hay una linea que dice
ShellExecuteWait(@AppDataDir & "\Avy_Antivirus\Uninstall_avy.exe", "", "", "open")
El cual al ejecutar la aplicación manualmente no hay ningún inconveniente en ella, pero si lo hago mediante el software creado presionando el boton desinstalar el problema se dá en la aplicación que lo ejecuta es decir en "Avy antivirus" botandome el siguiente error en consola
H:\Yasmany\TESIS - Anteproyecto Aprobado\Avy\Avy Source\Avy.au3 (1944) : ==> Subscript used with non-Array variable.:
If $pos[0] <= ($posicionObj[0] + $posicionObj[2]) And $pos[0] >= $posicionObj[0] And $pos[1] <= ($posicionObj[1] + $posicionObj[3]) And $pos[1] >= $posicionObj[1] Then
If $pos[0] <= ($posicionObj^ ERROR
Pero ya compilado y ejecutado es el siguiente que refiere a lo mismo
Acontinuación indico como están declaradas las variables:
Código: Seleccionar todo
Global $aux[1][2] ;Está declarada como global porque tiene que mantener su valor. No puede perder su valor booleano.
Global $auxMovRaton = 0
Global $cambioColor, $auxTiempo = 1, $posAntX, $posAntY
Código: Seleccionar todo
Func EventoSobreObjeto($TituloVentana, $EventoObjeto) ;Devuelve 1 si entra y 0 si sale del objeto EXTERNA?
Local $posicionObj, $pos
$posicionObj = ControlGetPos($TituloVentana, "", $EventoObjeto) ;Captura las medidas y posicion del objeto y los almacena en una matriz.
$pos = MouseGetPos() ;Obtenemos la posición x,y del ratón y la introducimos en esta variable
If WinActive($TituloVentana) Then ;Si está activa la ventana del programa realiza la acción.
$n = 0
While 1
If $aux[$n][0] = $EventoObjeto Then ExitLoop
If $aux[$n][0] = "" Then
$aux[$n][0] = $EventoObjeto
ExitLoop
EndIf
$n = $n + 1
If $n = UBound($aux) Then
ReDim $aux[$n + 1][2]
$aux[$n][0] = $EventoObjeto
ExitLoop
EndIf
WEnd
;Observa si el cursor sale o entra del objeto.
If $pos[0] <= ($posicionObj[0] + $posicionObj[2]) And $pos[0] >= $posicionObj[0] And $pos[1] <= ($posicionObj[1] + $posicionObj[3]) And $pos[1] >= $posicionObj[1] Then
If $aux[$n][1] = False Then ;utilizo una matriz auxiliar (en casi todas las funciones) para que solo retorne un valor, que no este continuamente enviando este valor.
$aux[$n][1] = True
Return 1
EndIf
Else
If $aux[$n][1] = True Then
$aux[$n][1] = False
Return 2
EndIf
EndIf
EndIf
Return ""
EndFunc ;==>EventoSobreObjeto
Código: Seleccionar todo
Func labelColor($boton)
$cambioColor = EventosobreObjeto("Avy Antivirus", $boton)
If $cambioColor = 2 Then
If GUICtrlRead($boton) = "_" Then
GUICtrlSetBkColor($boton, 0x535f6d)
ElseIf GUICtrlRead($boton) = "X" Then
GUICtrlSetBkColor($boton, 0xD70000)
ElseIf GUICtrlRead($boton) = "Abrir unidad" Then
GUICtrlSetBkColor($boton, 0x767e87)
ElseIf GUICtrlRead($boton) = "Desinstalar" Then
GUICtrlSetBkColor($boton, 0x767e87)
ElseIf GUICtrlRead($boton) = "Activar" Then
GUICtrlSetBkColor($boton, 0x767e87)
ElseIf GUICtrlRead($boton) = "Actualizar" Then
GUICtrlSetBkColor($boton, 0x767e87)
ElseIf GUICtrlRead($boton) = "Instalar" Then
GUICtrlSetBkColor($boton, 0x767e87)
Else
If GUICtrlGetState($boton) = 80 Then
GUICtrlSetBkColor($boton, 0x535f6d)
EndIf
EndIf
ElseIf $cambioColor = 1 Then
If GUICtrlRead($boton) = "_" Then
GUICtrlSetBkColor($boton, 0x666666)
ElseIf GUICtrlRead($boton) = "X" Then
GUICtrlSetBkColor($boton, 0xFF0000)
ElseIf GUICtrlRead($boton) = "Salir" Then
GUICtrlSetBkColor($boton, 0xD70000)
Else
If GUICtrlGetState($boton) = 80 Then
GUICtrlSetBkColor($boton, 0xFDA502)
EndIf
EndIf
EndIf
EndFunc ;==>labelColor
Aqui ya identifico los botones que quiero que cambie y tambien leo el texto de ciertos botones para darle un color diferente.
Código: Seleccionar todo
While 1
labelColor($btnAnalizar)
labelColor($btnDesinfectar)
labelColor($btnSalir)
labelColor($lblminimizar)
labelColor($lblcerrar)
labelColor($abrirUnidad)
labelColor($Actualizar)
labelColor($Desinstalar)
labelColor($DetalleWindows)
labelColor($Activar)
labelColor($Acercadeavy)
labelColor($ayuda)
labelColor($Instalar)
actualizarComboDeUnidades()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
If $nMsg = $GUI_EVENT_CLOSE Then
Exit
EndSwitch
WEnd
Espero su pronta ayuda, desde ya muchas gracias.