Ejecutar un archivo seleccionado desde resource

Iniciado por GEORGEFRT, 23 Mayo 2016, 06:44 AM

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

GEORGEFRT

Estoy aprendiendo a utilizar visual no se mucho hay veces que me hablan de dichas acciones las cuales no se mucho he investigado y integrado un archivo *.exe dentro del proyecto desde agregar recursos, y he visto que lo guarda en la carpeta resource, me gustaría  ejecutarlo, cual seria el código para la ejecución del archivo, espero me puedan ayudar.

fary

Un byte a la izquierda.

GEORGEFRT


fary

Una vez que obtienes el archivo del recurso tienes que generar el archivo en disco para poder ejecutarlo, o bién si no quieres generar el archivo ejecutarlo directamente desde memoria (RunPE).

saludos.

Un byte a la izquierda.

GEORGEFRT

Soy novato, no se si me pudieran ayudar con mas detalles saludos.

fary

Cita de: GEORGEFRT en 23 Mayo 2016, 16:25 PM
Soy novato, no se si me pudieran ayudar con mas detalles saludos.

¿Qué es lo que no entiendes?
Un byte a la izquierda.

Eleкtro

#6
¿VB6, o VB.NET?. No recuerdo ni por asomo el tema de los recursos en VB6.





Código (vbnet) [Seleccionar]
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Extracts a resource to disk.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <example> This is a code example.
''' <code>
''' ExtractResourceToDisk(My.Resources.MyTextfile, "C:\File.txt")
''' </code>
''' </example>
''' ----------------------------------------------------------------------------------------------------
''' <param name="resource">
''' The resource to extract.
''' </param>
'''
''' <param name="targetFilepath">
''' The target filepath where to save the resource data.
''' </param>
'''
''' <param name="overwrite">
''' If set to <see langword="True"/>, overwites any existing file,
''' otherwise, if the file already exists, a <see cref="Global.System.IO.IOException"/> exception is thrown.
''' </param>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Shared Sub ExtractResourceToDisk(ByVal resource As Byte(),
                                       ByVal targetFilepath As String,
                                       Optional ByVal overwrite As Boolean = False)

   Dim mode As FileMode
   If overwrite Then
       mode = FileMode.Create
   Else
       mode = FileMode.CreateNew
   End If

   Dim bufferSize As Integer = Streams.GetFileStreamBufferSize(resource.Length)

   Using fs As New FileStream(targetFilepath, mode, FileAccess.Write, FileShare.Read, bufferSize)
       fs.Write(resource, 0, resource.Length)
   End Using

End Sub


Ejemplo de uso:
Código (vbnet) [Seleccionar]
ExtractResourceToDisk(My.Resources.MyTextfile, "C:\File.txt")

Fuente:

Saludos.








Lekim

#7
Hola

Deberías especificar si lo quieres para VB6 o VB.NET


En VB6 puedes usar esta función para extraer el archivo:

Código (vb) [Seleccionar]

Public Function CrearArchivoBinario(strPath As String, strNameFile As String, idRes As Variant, TypeRes As String)
On Error GoTo EvitarError
Dim Path As String
Dim numFile As Integer
Dim aDatos() As Byte
numFile = FreeFile
   Path = strPath & "\" & strNameFile
   
   ' lee los datos en el array de bytes
   aDatos = LoadResData(idRes, TypeRes)
   
   ' abre un archivo para escribir los datos en modo binario
   Open Path For Binary Access Write As #numFile
   
   ' escribe el array de bytes para
   Put #numFile, , aDatos
   ' cierra el fichero
   Close
   'MsgBox "Datos guardados con éxito", vbInformation, "Información"
EvitarError:
If Err.Number <> vbNull Then
MsgBox Err.Description, vbCritical, "Error"
End If
End Function





Y la forma de usarlo es esta:

CrearArchivoBinario DIRECTORIO, "ARCHIVO", ID, "TIPO"

Ejemplo:

CrearArchivoBinario "C:\MyBinFile", "Aplicación.exe", 101, "CUSTOM"


NOTA: El directorio debe existir. Esta función no crea directorios. Por ejemplo si pones "C:\MyBinFile" y la carpeta "MyBinFile" no existe se produce un error.


Para ejecutarlo puedes usar Shell()

s2s