Eliminarse a si mismo. Se puede optimizar?
Publicado: 23 Sep 2010, 05:04
Hola, como estan.. :)
Les quiero enseñar mi codigo, parece inutil, pero lo quiero implementar en otro Script, en una funcion de desintalacion, dentro del mismo programa que simpre esta en modo de ejecucion, es algo complejo de explicar. Les paso a contar sobre el codigo que comparto al final del Post.
Su función es eliminarse a si mismo("Script compilado en .EXE"), lanza un código batch que como ven, hace una pausa o sleep (causada por "ping -n 2 -w 1 127.0.0.1" equivale a 1seg, esta dentro de un FOR y este comando se repite 5 veces en mi ejemplo, resultando 5 seg) que son suficientes para luego de haber terminado la pausa, nuestro programa de AutoIT ya este cerrado; el batch que aun corre luego de la pausa lanza el comando
DEL MIPROGRAMA.EXE (nombre de nuestro Script compilado de ejemplo), este se borra ya que no esta en ejecución. y por ultimo el batch con el comando DEL temp.bat elimina el mismo archivo Script batch temporal ejecutado en memoria que anteriormente lanzo nuestra aplicacion de AutoIT segundo antes de cerrarse.
El código NO esta optimizado, por ahí se crea un archivo temp.bat (tal vez no sea necesario) usando Run(@ComSpec & ' /c FOR........ ' ,' ',@SW_HIDE) no me resulto, tal vez cometí algún error; o algo similar a eso.. pienso yo.. No se si hay otra forma de hacer esto que hice, me gustaría saberlo. Si pueden aconsejarme alguna forma de mejorar el código para que piense en algún cambio gracias.
Aquí les dejo el código, espero que resulte de este código otro mejorado en conjunto mutuo
Saludos, dertin
Les quiero enseñar mi codigo, parece inutil, pero lo quiero implementar en otro Script, en una funcion de desintalacion, dentro del mismo programa que simpre esta en modo de ejecucion, es algo complejo de explicar. Les paso a contar sobre el codigo que comparto al final del Post.
Su función es eliminarse a si mismo("Script compilado en .EXE"), lanza un código batch que como ven, hace una pausa o sleep (causada por "ping -n 2 -w 1 127.0.0.1" equivale a 1seg, esta dentro de un FOR y este comando se repite 5 veces en mi ejemplo, resultando 5 seg) que son suficientes para luego de haber terminado la pausa, nuestro programa de AutoIT ya este cerrado; el batch que aun corre luego de la pausa lanza el comando
DEL MIPROGRAMA.EXE (nombre de nuestro Script compilado de ejemplo), este se borra ya que no esta en ejecución. y por ultimo el batch con el comando DEL temp.bat elimina el mismo archivo Script batch temporal ejecutado en memoria que anteriormente lanzo nuestra aplicacion de AutoIT segundo antes de cerrarse.
El código NO esta optimizado, por ahí se crea un archivo temp.bat (tal vez no sea necesario) usando Run(@ComSpec & ' /c FOR........ ' ,' ',@SW_HIDE) no me resulto, tal vez cometí algún error; o algo similar a eso.. pienso yo.. No se si hay otra forma de hacer esto que hice, me gustaría saberlo. Si pueden aconsejarme alguna forma de mejorar el código para que piense en algún cambio gracias.
Aquí les dejo el código, espero que resulte de este código otro mejorado en conjunto mutuo
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=MIPROGRAMA.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$file = FileOpen("temp.bat",1)
If $file = -1 Then
MsgBox(0,"Error","Error")
EndIf
FileWrite($file, "@ECHO OFF" & @CRLF & "FOR /l %%a IN (5,-1,1) do (ECHO 1 >NUL %%as&ping -n 2 -w 1 127.0.0.1>NUL)" & @CRLF & "DEL MIPROGRAMA.EXE" & @CRLF & "DEL temp.bat")
FileClose($file)
Run('temp.bat','',@SW_HIDE)
Exit