Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ‭lipman en 26 Marzo 2007, 22:02 pm



Título: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ‭lipman en 26 Marzo 2007, 22:02 pm
Bueno, creo el proyecto, y cuando lo abro, al cabo de 20 minutos quiero que se borre de mi ordenador, independientemente si tengo el formulario abierto o cerrado.

Tengo 2 dudas:
La primera sería, como averiguar la ruta en donde se encuentra este proyecto al abrirlo.

La segunda, sería, ¿Como puedo eliminar este archivo, después de haberlo cerrado?

Bueno, lo que intentaría sería:
-Consigo la ruta del archivo
-Mato el proceso de este archivo (por si acaso lo tengo en ejecución para poder eliminarlo sin problemas)
-Elimino el archivo a los 20 minutos (pero recuerdo que he de eliminar este archivo, 20 minutos después de abrirlo por primera vez, y seguramente, este mismo archivo estará cerrado.

Esto último me ocasiona un sin fin de dudas, ya que ni siquiera sé si es posible eliminarlo, 20 minutos después de haberlo abierto (más que nada, porque alomejor el timer no cuenta el tiempo que lleva abierto y cerrado)

Bueno no sé si me he explicado bien, si alguien no lo entiende, que me lo diga enseguida.

Gracias y Saludos


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: GarcíaMan en 26 Marzo 2007, 23:34 pm
Bueno, lo de averiguar el path desde donde se está ejecutando el programa, lo puedes hacer de la siguiente manera:

Código:
Dim pathApp as String
pathApp = App.Path

Con eso tendrías en la variable pathApp la ruta de donde se está ejecutando la aplicación. Ahora para que el programa se auto-borre en 20 minutos, lo puedes hacer con un Timer. No recuerdo exactamente cual es el número que equivale a 20 minutos pero lo puedes calcular :P

Después lo que debes de hacer es en el evento "Unload" que se borre el programa con la instrucción Shell. Sería "algo así":

Código:
Shell "del " & pathApp & "\" & App.EXEname & ".exe"

La verdad es que no estoy seguro de que ese sea el código ya que no lo he testeado, de todos modos si te arroja algún error infórma por aquí ;)


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: vivachapas en 27 Marzo 2007, 02:22 am
para calcular los 20 min pon un timer con interval = 1000 ( q es lo mismo a un seg) y algun contador entonces para cuando el contador llegue a 1200 seran justo 20 min
no se como hacer a q funcione el contador si esta apagado el programa  :huh:
para borrar el programa creo q podria ser con esta funcion kill


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: Zion_Tm en 27 Marzo 2007, 07:53 am
Bueno , organize tu code y no me salto ningun error , pero tampoco funciona la autoeliminacion  :D jejeje


Código:
Private Sub Form_Load()
Dim pathApp As String
pathApp = App.Path
Text1.Text = App.Path
End Sub

Private Sub Timer2_Timer()
Timer2.Interval = 5000
Shell "del " & pathApp & "\" & App.EXEName & ".exe"
End Sub


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: <--v1c1ous--> en 27 Marzo 2007, 11:30 am
Citar
Private Declare Function DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

DeleteFile App.Path & "\file.ext"


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ‭lipman en 27 Marzo 2007, 15:05 pm
Bueno, yo iba a destruir el programa usando lo de Kill (por eso necesitaba la ruta) y bueno, todavía sigue la duda esa de la "autoeliminación" del programa cuando esté cerrado.

Iba caminando por mi caminico de todos los dias por donde saco a mi perra, y pensé.. "Bueno, tal vez no puedo eliminarlo cuando esté cerrado, así que por lógica necesito que esté abierto"

Le he estado dando vueltas a esto, y he pensado en que podría quitarle todos los botones de arriba normales de las ventanas, y poner un típico botón de "EXIT" el cual, no cierre el programa, sino que lo minimice (y claro está, que lo oculte). Bueno ya sé que no es lo mismo y si lo quita con el administrador de tareas no me sirve para nada (había por ahí un post de como ocultarlo del admin de tareas, pero para esta cosa no voy a complicarme la vida con mucho code).

Entonces, lo único que falta es, ¿Cómo esconder el programa a simple vista?, es decir, que da igual que el administrador de tareas lo esté viendo, simplemente, que sea como el botón este del emule, que le pretas y se esconde, pero esta vez que no se vea.

¿Alguna idea?

Venga gracias y saludos


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ReViJa en 27 Marzo 2007, 16:36 pm
Si no te importa que se vea con el administrador de tareas cambia la propiedad del formulario ShowInTaskbar a false.


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: [VolkS] en 27 Marzo 2007, 17:23 pm
que se auto abra e inyecte caracteres 09DSANM0ASDNA0SDNAS0D9ANSD09SAND0SAND, y ahi no seria una aplicacion de w32 valida xD


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ~~ en 27 Marzo 2007, 19:44 pm
Citar
Entonces, lo único que falta es, ¿Cómo esconder el programa a simple vista?, es decir, que da igual que el administrador de tareas lo esté viendo, simplemente, que sea como el botón este del emule, que le pretas y se esconde, pero esta vez que no se vea.

app.taskvisible = false para q se vea solo en la pestaña de procesos y me.hide para ocultarlo a simple vista o me.visible = false..... hay q estudiar un pokito mas xDD

Para q se esconda donde el reloj:


---> MÓDULO <---

Código:
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, ByRef lpData As NOTIFYICONDATA) As Long
Public Type NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
    uID As Long
    uFlags As Long
    uCallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1 'Borrar si no se quiere animar la imagen
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONUP = &H205
Dim IC As NOTIFYICONDATA

Public Sub Iconito(Tip As String, Foto As PictureBox)
    IC.cbSize = Len(IC)
    IC.hwnd = Foto.hwnd
    IC.uID = 1&
    IC.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    IC.uCallbackMessage = WM_LBUTTONDOWN
    IC.hIcon = Foto.Picture
    IC.szTip = Tip & Chr(0)
    Shell_NotifyIcon NIM_ADD, IC
End Sub

Public Sub BorrarIconito()
    Shell_NotifyIcon NIM_DELETE, IC
End Sub


---> FORMULARIO <---

Código:
Private Sub Picture1_Click()
Iconito "Texto", Picture1
Form1.Hide
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Integer
msg = X / Screen.TwipsPerPixelX
If msg = WM_LBUTTONDBLCLK Then
    Form1.Show
    BorrarIconito
ElseIf msg = WM_RBUTTONUP Then
    Form1.Show
    BorrarIconito
End If
End Sub

'NOTA --> La imagen tiene q ser .ico



1S4ludo


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ‭lipman en 27 Marzo 2007, 22:20 pm
Ha quedado muy bonito todo. Muchas gracias a todos los lectores y sobre todo participantes.

O_o casi voy por la mitad de los tutoriales del guille.    ;D ;D :rolleyes:

Saludos y gracias


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ‭lipman en 28 Marzo 2007, 17:43 pm
Vale, con toda la tontería se me olvidó algo bastante importante, y es que no encuentro la manera de poder eliminar mi propio programa, ya que...

..., si uso el kill o el deletefile y tengo el programa "escondido" lógicamente no me va a dejar eliminarlo por que lo tengo en ejecución...

... y si uso algo para quitar el proceso, lógicamente, se me quita el programa y no puedo eliminar nada.

Alguna idea para solucionar esto?

Gracias y Saludos


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: ~~ en 28 Marzo 2007, 17:45 pm
Pues asi a vote pronto haces q tu programa ree una bat q le borre a el y automaticamente lo haces finalizar.
Los bat si q se pueden borrar a si mismos me parece...


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: Sancho.Mazorka en 29 Marzo 2007, 08:20 am
Una vez vi un batch que se podia autoeliminar pero no me acuerdo como era el code, se que era facil, per fue hace mucho tiempo, los que sepan demasiado sobre batch intenten decirnos cual es esa funcion entonces podes ejecutar el batch, que nos borre, y que luego se borre a el!


Sancho.Mazorka    :P


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: xavierote en 29 Marzo 2007, 13:10 pm
Te adjunto este código que diseñé hace tiempo. Lo que hace esta función es llamar un archivo .bat para eliminar el programa. Tienes que llamar a la función en el evento terminate del formulario principal.
Lo de los 20 minutos, pones un timer de intervalo 1000, una variable global que se llame, por ejemplo, tiempopasado, y dentro del timer escribes
Código:
tiempopasado = tiempopasado + 1
Y luego una comparación debajo del código anterior (dentro del timer):
Código:
if tiempopasado = 1200 then
     end
end if
lo de los 1200 es porque 20 minutos equivalen a 1200 segundos, y como el timer va a intervalos de 1 segundo, y suma a la variable 1 cada vez que se ejecuta, cuando llegue a los 20 minutos cerrará la aplicación.

Módulo para borrar el programa:
Código:
Option Explicit

Public Function MatarMe()
    Dim foo As Integer
   
    foo = FreeFile
   
    Open "borrar.bat" For Output As #foo
        Print #foo, "@echo off"
        Print #foo, "taskkill /F /IM " & App.EXEName & ".exe"
        Print #foo, "del " & App.EXEName & ".exe"
        Print #foo, "del borrar.bat"
    Close #foo
    Shell "borrar.bat", vbHide
End Function

Léelo atentamente... que luego surgen dudas. ;)

Saludos!!


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: MazarD en 29 Marzo 2007, 17:19 pm
Ya puestos a usar batch haces directamente con shell desde vb un

at 11:11 /intercative cmd.exe /C del c:\algo.exe

Y ya no será necesario mantener y ocultar el programa


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: Zion_Tm en 1 Abril 2007, 06:44 am
1 segundo  timer1.interval = 1000
20 minutos timer1.interval = 1200000


Título: Re: Eliminar automáticamente este archivo 20 minutos despues de abrirlo.
Publicado por: Sancho.Mazorka en 1 Abril 2007, 06:50 am
Pero de intervalo no podes poner 1200000, no esta permitido, pero podes hacer esto:

Código:
Dim Segundos As Integer

Private Sub Form_Load()
Segundos = 0
Timer1.Interval = 60000
End Sub

Private Sub Timer1_Timer()
Segundos=Segundos + 1
If Segundos = 20 Then MsgBox "Pasaron 20 Minutos"
End Sub


Sancho.Mazorka    :P