Asi que me puse a darle al visual y tachan me salio al fin la funcion melt, efectiva (al menos eso creo ) y sencilla
ahí va el codigo:
'************************************************
'*
'* Funcion => Melt, es decir, borrar un archivo al ejecutarlo
'*
'*
'* Autor => BioHazardBB (raulrl xD)
'*
'* Si usas este codigo en algun programa tuyo puedes mencionarme
'* en los creditos si quieres, si no lo consideras justo solo te
'* pido que leas el código y lo entiendas y no meramente lo copies
'*
'************************************************
Private Declare Function ShellExecuteA Lib "shell32.dll" (ByVal Hwnd As Long, ByVal lpOperation _
As String, ByVal lpFile As String, ByVal lpParameters _
As String, ByVal lpDirectory As String, ByVal nShowCmd _
As Long) As Long
Private Function derretirfuncion()
If LCase(App.Path) <> LCase(Environ("tmp")) Then 'si no estamos en temp
On Error Resume Next
Kill Environ("systemroot") & "\prueba.dat"
Open Environ("systemroot") & "\prueba.dat" For Append As 2 'hacemos un archivo con nuestra ruta
Write #2, App.Path & "\" & App.EXEName & ".exe"
Close #2
On Error Resume Next
Kill Environ("tmp") & "\copiedfile.exe"
FileCopy App.Path & "\" & App.EXEName & ".exe", Environ("tmp") & "\copiedfile.exe" 'nos copiamos en temp
DoEvents 'dejamos una pausita para que acabe de hacer las cosas, sino podria darnos error
ShellExecuteA Me.Hwnd, "Open", Environ("tmp") & "\copiedfile.exe", vbNullString, vbNullString, 1 'ejecutamos nuestra copia
End ' y nos acabamos para poder despues borrarnos (no estar en uso)
Else 'si estamos en temp
Dim ruta As String
Open Environ("systemroot") & "\prueba.dat" For Input As 3
Input #3, ruta 'leemos la ruta que dejamos antes
Close #3
Kill ruta 'matamos el fichero anterior
End If
End Function 'hacemos el resto de las funciones del programa
RESUMEN:
1º el archivo escribe su ruta en un .dat
2º el archivo se copia en temp
3º el archivo ejecuta el archivocopia y End
4º el archivocopia lee el .dat y borra la ruta en el escrita
Si se puede pensar, se puede programar