Ejecutar un Vbs desde Recursos

Iniciado por nosequenosenada, 15 Enero 2021, 22:31 PM

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

nosequenosenada

Buenas chavales, como estan? espero que bien, aqui tengo mi duda, quiero cargar un vbs desde recursos en vb6 y luego ejecutarlo.


Desde ya  muchas gracias saludos.!

Serapis

#1
Primero tienes que  usar el editor de recursos para añadir un "CustomResource", que en el caso dado será elegir el fichero vbs y guardar el fichero de recursos (te lo pide antes de compilar).

Luego en tiempo de ejecución tienes que usar la función LoadResData
Ten presente que dicha función devuelve un array de bytes, con los que ya tu trabajas como te convenga, lo puedes guardar a un fichero y ejecutar y al terminar borrarlo, etc...

Un simple ejemplo de muestra...
Código (vb) [Seleccionar]

Private Sub RescatarElVbs()
   Dim canal As integer, ruta As String
   Dim vbsFile() As Byte
   
   canal  = FreeFile
   ruta  = App.Path & "\" & cstr(now) & ".vbs"
   Open ruta  For Binary As #canal
   vbsFile = LoadResData(108, "MiVBS")  ' valores ficiticios de ejemplo, deben ser loa que contengan el recurso.
   Put #canal , , vbsFile
   erase vbsFile
   Close #canal

  ' shell(...)  o lo que quieras hacer con ello.
  ' kill ruta .. cuando termines.
end sub





nosequenosenada

Cita de: Serapis en 16 Enero 2021, 02:01 AM
Primero tienes que  usar el editor de recursos para añadir un "CustomResource", que en el caso dado será elegir el fichero vbs y guardar el fichero de recursos (te lo pide antes de compilar).

Luego en tiempo de ejecución tienes que usar la función LoadResData
Ten presente que dicha función devuelve un array de bytes, con los que ya tu trabajas como te convenga, lo puedes guardar a un fichero y ejecutar y al terminar borrarlo, etc...

Un simple ejemplo de muestra...
Código (vb) [Seleccionar]

Private Sub RescatarElVbs()
   Dim canal As integer, ruta As String
   Dim vbsFile() As Byte
   
   canal  = FreeFile
   ruta  = App.Path & "\" & cstr(now) & ".vbs"
   Open ruta  For Binary As #canal
   vbsFile = LoadResData(108, "MiVBS")  ' valores ficiticios de ejemplo, deben ser loa que contengan el recurso.
   Put #canal , , vbsFile
   erase vbsFile
   Close #canal

  ' shell(...)  o lo que quieras hacer con ello.
  ' kill ruta .. cuando termines.
end sub







Gracias por tu respuesta de verdad,  pobre con tu ejemplo use shell para llamar al vbs  y me tira error en lo que seria la ruta, tenes idea que puede ser?
gracias nuevamente.

nosequenosenada

Ya lo pude solucionar gracias!!

saludos :D

Serapis

Cita de: nosequenosenada en 16 Enero 2021, 06:58 AM
... contu ejemplo use shell para llamar al vbs  y me tira error en lo que seria la ruta, tenes idea que puede ser?
Si, claro.
La sentencia 'now', da la fecha de 'ahora', lo que incluye loe separadores de los campos de fecha y hora, que deben reemplazarse, por ejemplo por un guión...

...como es un código al vuelo, es normal que se escape un detalle.