elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Command$ extraer archivos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Command$ extraer archivos.  (Leído 6,282 veces)
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Command$ extraer archivos.
« Respuesta #10 en: 13 Febrero 2011, 22:52 pm »

Código
  1. ' Mr Frog Mod Raul338 - Le cambie la RegExp
  2. Public Function GetFiles(ByVal strText As String) As Collection
  3. Dim cTemp                       As New Collection
  4. Dim oRegExp                     As Object
  5. Dim oMatch                      As Object
  6. Dim oMatches                    As Object
  7.  
  8.    Set oRegExp = CreateObject("VBScript.RegExp")
  9.  
  10.    With oRegExp
  11.        .Pattern = "\s?(\""[\w\s:\\\.]+\""|[\w\s:\\\.]+)\s?"
  12.        .Global = True
  13.        .IgnoreCase = True
  14.    End With
  15.  
  16.    Set oMatches = oRegExp.Execute(strText)
  17.  
  18.    For Each oMatch In oMatches
  19.        cTemp.Add oMatch.SubMatches(0)
  20.    Next
  21.  
  22.    Set GetFiles = cTemp
  23. End Function
  24.  
  25. Private Sub Form_Load()
  26. Dim vItem                       As Variant
  27. Const S                         As String = "C:\Frog\Proyecto1.exe ""C:\reto 123.exe"" C:\imagen.png"
  28.    For Each vItem In GetFiles(S)
  29.        MsgBox vItem
  30.    Next
  31. End Sub
  32.  
;-)


En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Command$ extraer archivos.
« Respuesta #11 en: 13 Febrero 2011, 23:04 pm »

raul338 creo que sigue manteniendo las comillas.

Leandro probaste la api CommandLineToArgv ? aca te paso un ejemplo, funciona con caracteres especiales y comillas simples.

Código
  1. Option Explicit
  2.  
  3. Private Type MungeLong
  4.   X As Long
  5.   Dummy As Integer
  6. End Type
  7.  
  8. Private Type MungeInt
  9.   XLo As Integer
  10.   XHi As Integer
  11.   Dummy As Integer
  12. End Type
  13.  
  14. Private Declare Function CommandLineToArgv Lib "shell32" Alias "CommandLineToArgvW" (ByVal lpCmdLine As String, pNumArgs As Integer) As Long
  15. Private Declare Sub RtlMoveMemory Lib "kernel32" (dest As Any, src As Any, ByVal size&)
  16. Private Declare Function PtrToStr Lib "kernel32" Alias "lstrcpyW" (RetVal As Byte, ByVal Ptr As Long) As Long
  17. Private Declare Function PtrToInt Lib "kernel32" Alias "lstrcpynW" (RetVal As Any, ByVal Ptr As Long, ByVal nCharCount As Long) As Long
  18. Private Declare Function StrLen Lib "kernel32" Alias "lstrlenW" (ByVal Ptr As Long) As Long
  19. Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
  20.  
  21. Private Sub Form_Load()
  22.    Dim sarCommand() As String, lngA As Long
  23.  
  24.    sarCommand = ParseCommandLine
  25.  
  26.    For lngA = 0 To UBound(sarCommand)
  27.        MsgBox sarCommand(lngA)
  28.    Next lngA
  29. End Sub
  30.  
  31. Public Function ParseCommandLine() As String()
  32.   Dim sCommandLineW As String
  33.   Dim BufPtr As Long
  34.   Dim lNumArgs As Integer
  35.   Dim i As Long
  36.   Dim lRes As Long
  37.   Dim TempPtr As MungeLong
  38.   Dim TempStr As MungeInt
  39.   Dim ArgArray(512) As Byte
  40.   Dim Arg As String
  41.   Dim Args() As String
  42.  
  43.   sCommandLineW = StrConv("C:\Proyecto1.exe ""C:\reto 123.exe"" C:\imagen.png archivo.txt aaa.txt aadada#&%''.txt", vbUnicode)
  44.   BufPtr = CommandLineToArgv(sCommandLineW, lNumArgs)
  45.   ReDim Args(lNumArgs - 1)
  46.  
  47.   For i = 1 To lNumArgs
  48.       lRes = PtrToInt(TempStr.XLo, BufPtr + (i - 1) * 4, 2)
  49.       lRes = PtrToInt(TempStr.XHi, BufPtr + (i - 1) * 4 + 2, 2)
  50.       LSet TempPtr = TempStr
  51.       lRes = PtrToStr(ArgArray(0), TempPtr.X)
  52.       Arg = Left(ArgArray, StrLen(TempPtr.X))
  53.       Args(i - 1) = Arg
  54.   Next i
  55.  
  56.   Call GlobalFree(BufPtr)
  57.   ParseCommandLine = Args
  58. End Function
  59.  
  60. Public Function IsEmptyArray(TestArray As Variant) As Boolean
  61.   Dim lTemp As Long
  62.   On Error GoTo ErrHandler
  63.   lTemp = LBound(TestArray)
  64.   IsEmptyArray = False
  65.   Exit Function
  66. ErrHandler:
  67.   IsEmptyArray = True
  68. End Function

saludos.



En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Command$ extraer archivos.
« Respuesta #12 en: 13 Febrero 2011, 23:13 pm »

Muy bueno seba123neo  tampoco tenia en cuenta los caracteres especiales. la de Raul funciona pero lo limita los caracteres especiales.

Muchisimas gracias a todos.

En línea

ignorantev1.1


Desconectado Desconectado

Mensajes: 617


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Command$ extraer archivos.
« Respuesta #13 en: 13 Febrero 2011, 23:51 pm »

No me doy por vencido!  ::)
Código
  1. Sub getFiles(ByVal args As String, res() As String)
  2.    Dim i As Integer
  3.    Dim e As Integer
  4.    Dim sTmp As String
  5.  
  6.    i = InStr(args, Chr$(34))
  7.    e = InStr(i + 1, args, Chr$(34))
  8.    While i > 0 And e > 0
  9.        sTmp = Mid(args, i, e - i + 1)
  10.        args = Replace(args, sTmp, Replace(Mid(sTmp, 2, Len(sTmp) - 2), " ", "|") & ":")
  11.        i = InStr(e, args, Chr$(34))
  12.        e = InStr(i + 1, args, Chr$(34))
  13.    Wend
  14.    If Len(args) = 0 Then args = ":"
  15.    args = Replace$(args, "  ", "")
  16.    args = Replace$(args, " ", ":")
  17.    args = Replace$(args, "::", ":")
  18.    If Mid$(args, Len(args), 1) = ":" Then args = Mid$(args, 1, Len(args) - 1)
  19.    args = Replace$(args, "|", " ")
  20.    res = Split(args, ":")
  21. End Sub
  22.  
« Última modificación: 13 Febrero 2011, 23:55 pm por ignorantev1.1 » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Command$ extraer archivos.
« Respuesta #14 en: 14 Febrero 2011, 00:57 am »

.

Otra forma...

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim v$()
  6. Dim int_i%
  7.    For int_i% = 0 To GetArgs(InputBox("", "", ""), v$())
  8.        Debug.Print v$(int_i%)
  9.    Next
  10. End Sub
  11.  
  12. Public Function GetArgs(ByRef cmd$, ByRef Args$()) As Integer
  13. Dim lng_ptr&(2)
  14. Dim lng_str&
  15. Dim lng_i&
  16. Dim byt_asc As Byte
  17.  
  18.    lng_str& = Len(cmd$)
  19.    GetArgs% = -1
  20.  
  21.    For lng_i& = 1 To lng_str&
  22.  
  23.        lng_ptr&(0) = InStr(lng_i&, cmd$, Chr(32), vbBinaryCompare)
  24.        lng_ptr&(1) = InStr(lng_i&, cmd$, Chr(34), vbBinaryCompare)
  25.  
  26.        If Not lng_ptr&(0) + 1 = lng_ptr&(1) Then
  27.            If lng_ptr&(0) < lng_ptr&(1) Or lng_ptr&(1) = 0 And Not lng_ptr&(0) = 0 Then
  28.                lng_i& = lng_ptr&(0) + 1
  29.                byt_asc = 32
  30.            ElseIf lng_ptr&(1) < lng_ptr&(0) Or lng_ptr&(0) = 0 And Not lng_ptr&(1) = 0 Then
  31.                lng_i& = lng_ptr&(1) + 1
  32.                byt_asc = 34
  33.            Else
  34.                Exit For
  35.            End If
  36.  
  37.            lng_ptr(2) = InStr(lng_i&, cmd$, Chr(byt_asc), vbBinaryCompare)
  38.  
  39.            If Not lng_ptr(2) = lng_i& - 1 Then
  40.                GetArgs% = GetArgs% + 1
  41.                ReDim Preserve Args(0 To GetArgs%)
  42.  
  43.                If lng_ptr(2) > lng_i& Then
  44.                    Args$(GetArgs%) = Mid$(cmd$, lng_i&, lng_ptr&(2) - lng_i&)
  45.                    If byt_asc = 32 Then lng_ptr&(2) = lng_ptr&(2) - 1
  46.                    lng_i& = lng_ptr&(2)
  47.                Else
  48.                    Args$(GetArgs%) = Mid$(cmd$, lng_i&)
  49.                    Exit For
  50.                End If
  51.            End If
  52.        End If
  53.    Next
  54.  
  55. End Function
  56.  
  57.  

Ducles Lunas!¡.
« Última modificación: 14 Febrero 2011, 01:02 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extraer archivos...
Programación Visual Basic
akss_wm 1 1,697 Último mensaje 21 Diciembre 2005, 04:12 am
por maxnet
Como Extraer archivos de un ejecutable
Multimedia
abe786 3 15,803 Último mensaje 30 Marzo 2006, 05:26 am
por abe786
Extraer archivos .rar
GNU/Linux
dj_tora 5 6,689 Último mensaje 22 Agosto 2010, 23:57 pm
por B€T€B€
Ayuda extraer archivos
Ingeniería Inversa
tbgio 5 2,902 Último mensaje 14 Julio 2011, 21:41 pm
por tbgio
extraer, editar y reemplazar archivos de un exe
Dudas Generales
Vortex19 4 7,439 Último mensaje 26 Octubre 2011, 21:45 pm
por Vortex19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines