Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Adrylek en 8 Julio 2013, 18:39 pm



Título: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 8 Julio 2013, 18:39 pm
Hola, quiero hacer un ejecutable que llame a un archivo .exe externo, y me ha funcionado con el comando Shell, pero si ese mismo archivo lo abre otra persona en otro PC, a él no le abre el .exe externo porque no está en su ruta..

La pregunta es cómo hacer eso pero que se abre en todos los ordenadores..


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 8 Julio 2013, 18:44 pm
...¿Y cual es la susodicha ruta en cuestión?.

-> http://en.wikipedia.org/wiki/Environment_variable

+ -> http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx

Saludos!


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 8 Julio 2013, 18:56 pm
...¿Y cual es la susodicha ruta en cuestión?.

-> http://en.wikipedia.org/wiki/Environment_variable

+ -> http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx

Saludos!
C/Ejecutable.exe .. me refiero a ponerlo y que abra en todos los pc, aunque en su disco duro no esté el ejecutable.


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 8 Julio 2013, 19:06 pm
C/Ejecutable.exe .. me refiero a ponerlo y que abra en todos los pc, aunque en su disco duro no esté el ejecutable.

Entonces tienes dos opciones:

1. Añadir ese executable a tu proyecto como un archivo de recurso, y cargar el recurso al disco cuando quieras usarlo.

2. Añadir el executable a la carpeta de trabajo de tu aplicación (.\windowsaplication\debug\bin\Executable.exe), de esta forma no necesitas especificar una ruta al llamar al executable, porque está en el directorio actual, así que es suficiente con escribir el nombre, sin la ruta.

Saludos!


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 8 Julio 2013, 19:12 pm
Entonces tienes dos opciones:

1. Añadir ese executable a tu proyecto como un archivo de recurso, y cargar el recurso al disco cuando quieras usarlo.

2. Añadir el executable a la carpeta de trabajo de tu aplicación (.\windowsaplication\debug\bin\Executable.exe), de esta forma no necesitas especificar una ruta al llamar al executable, porque está en el directorio actual, así que es suficiente con escribir el nombre, sin la ruta.

Saludos!
Me pone que no se encuentra..
Lo siento pero lo podrías explicar mejor? Soy bastante noob r.r


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 8 Julio 2013, 19:54 pm
Estructura de la carpeta de tu proyecto:

Código:
.\debug\bin\MiProyectoCompilado.exe
.\debug\bin\Archivo externo.exe

Metes el proceso externo en la misma carpeta donde está tu proyecto compilado.

bien, y luego lo llamas de la siguiente manera:

Código
  1. Process.Start(".\Archivo externo.exe", "- Argumentos")

Así de simple.

Saludos!


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 8 Julio 2013, 19:59 pm
Estructura de la carpeta de tu proyecto:

Código:
.\debug\bin\MiProyectoCompilado.exe
.\debug\bin\Archivo externo.exe

Metes el proceso externo en la misma carpeta donde está tu proyecto compilado.

bien, y luego lo llamas de la siguiente manera:

Código
  1. Process.Start(".\Archivo externo.exe", "- Argumentos")

Así de simple.

Saludos!
Gracias ya me funciona, esto se abrirá en todos los pc?


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 8 Julio 2013, 20:06 pm
Gracias ya me funciona, esto se abrirá en todos los pc?

Si, no te preocupes, en todos, sin excepción alguna (siempre que el exe esté en la misma carpeta que el compilado como en el ejemplo anterior, o en la carpeta SYSTEM32/64).

Saludos


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 8 Julio 2013, 20:10 pm
Si, no te preocupes, en todos, sin excepción alguna (siempre que el exe esté en la misma carpeta que el compilado como en el ejemplo anterior, o en la carpeta SYSTEM32/64).

Saludos
s:, me funcionaba, pero si cambio la ruta del archivo que he creado, de /bin al escritorio, ya no me funciona y me dice otra vez que no encuentra el archivo, siempre ha de estar en la misma carpeta y yo sólo quiero un archivo que pueda usar en diferentes pc


Título: Re: Llamar a un ejecutable externo VB
Publicado por: El Benjo en 8 Julio 2013, 21:04 pm
Ambos archivos deben estar en la misma ruta, si moviste tu aplicación al escritorio también el ejecutable que quieres llamar debe estar en el escritorio.


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 8 Julio 2013, 21:58 pm
yo sólo quiero un archivo que pueda usar en diferentes pc

Pues escoge la primera opción, el archivo externo.exe lo metes en tu proyecto como un recurso, y luego lo cargas al disco (a la carpeta que quieras, la carpeta %TEMP% estaría bien) y lo ejecutas.

El archivo lo puedes añadir como recurso desde las propiedades del proyecto, la pestaña "resources", no tiene pérdida (busca en Google si aún asi no te aclaras.), y para cargar el recurso a una carpeta puedes usar uno d emis snippets:
http://foro.elhacker.net/net/libreria_de_snippets_posteen_aqui_sus_snippets-t378770.0.html;msg1819773#msg1819773

Saludos


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 9 Julio 2013, 18:02 pm
Pues escoge la primera opción, el archivo externo.exe lo metes en tu proyecto como un recurso, y luego lo cargas al disco (a la carpeta que quieras, la carpeta %TEMP% estaría bien) y lo ejecutas.

El archivo lo puedes añadir como recurso desde las propiedades del proyecto, la pestaña "resources", no tiene pérdida (busca en Google si aún asi no te aclaras.), y para cargar el recurso a una carpeta puedes usar uno d emis snippets:
http://foro.elhacker.net/net/libreria_de_snippets_posteen_aqui_sus_snippets-t378770.0.html;msg1819773#msg1819773

Saludos
:l.. Me aparece el .exe en la carpeta Resources y de ahí ya no me deja moverlo, y no sé cómo llamarlo desde ahí..


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 9 Julio 2013, 18:24 pm
@Adrylek

Se te ha dado todo lo que necesitas ...de todas formas no entiendo porque quieres mover el archivo de la carpeta Resources... al compilar tu proyecto ese archivo externo queda DENTRO del archivo compilado... ¿No querías un archivo "único" que se pueda mover a donde quieras?

...Da detalles de tu problema porque esto empieza a ser incómodo, no somos adivinos.

1. ¿que archivo externo es ese?, nombre de aplicacion si es conocido.
2. ¿Que se supone que hace tu aplicación con ese archivo?, ¿tu aplicación depende de ese archivo externo?
3. ¿que significa que no funciona en otro pc?
4. en que carpeta se encuentra ese archivo externo en tu pc
5. en que carpeta se puede encontrar ese otro archivo en otra pc
6. ¿no te sirve con embedir el archivo como recurso, cargarlo al disco, y problema solucionado?
7. ¿Tampoco te sirve mantener el archivo externo EN LA MISMA CARPETA que al archivo compilado?
8. ¿Tampoco te sirve mover el archivo externo a la carpeta system32?.
9. Cualquiera de las tres últimas opciones te sirve, ¿Hay alguna que no entiendas como hacerlo?.
10. da un ejemplo bien claro de todo con imágenes si lo ves necesario.

Saludos.


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 9 Julio 2013, 18:50 pm
@Adrylek

Se te ha dado todo lo que necesitas ...de todas formas no entiendo porque quieres mover el archivo de la carpeta Resources... al compilar tu proyecto ese archivo externo queda DENTRO del archivo compilado... ¿No querías un archivo "único" que se pueda mover a donde quieras?

...Da detalles de tu problema porque esto empieza a ser incómodo, no somos adivinos.

1. ¿que archivo externo es ese?, nombre de aplicacion si es conocido.
2. ¿Que se supone que hace tu aplicación con ese archivo?, ¿tu aplicación depende de ese archivo externo?
3. ¿que significa que no funciona en otro pc?
4. en que carpeta se encuentra ese archivo externo en tu pc
5. en que carpeta se puede encontrar ese otro archivo en otra pc
6. ¿no te sirve con embedir el archivo como recurso, cargarlo al disco, y problema solucionado?
7. ¿Tampoco te sirve mantener el archivo externo EN LA MISMA CARPETA que al archivo compilado?
8. ¿Tampoco te sirve mover el archivo externo a la carpeta system32?.
9. Cualquiera de las tres últimas opciones te sirve, ¿Hay alguna que no entiendas como hacerlo?.
10. da un ejemplo bien claro de todo con imágenes si lo ves necesario.

Saludos.

6- Sí que me serviría, pero no lo entiendo bien.. si lo cargo como recurso me dice que ese tipo de archivo no lo admite (.exe) pero me aparece en la carpeta Recursos, es lo que decía.
Sólo quiero saber como cargarlo al disco como dices tú..


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 9 Julio 2013, 18:59 pm
si lo cargo como recurso me dice que ese tipo de archivo no lo admite (.exe)

copia el mensaje de excepción completo, hay un botón que pone "copiar mensaje".

Sólo quiero saber como cargarlo al disco como dices tú..

Código
  1. Load_Resource_To_Disk(My.Resources.ArchivoExterno, "C:\Process.exe")
  2. Process.Start("C:\Process.exe")
  3.  
  4.    Private Function Load_Resource_To_Disk(ByVal Resource As Byte(), ByVal Target_File As String) As Boolean
  5.        Try
  6.            Dim Buffer_FileStream As New IO.FileStream(Target_File, IO.FileMode.Create, IO.FileAccess.Write)
  7.            Buffer_FileStream.Write(Resource, 0, Resource.Length) : Buffer_FileStream.Close()
  8.            Return True
  9.        Catch ex As Exception
  10.            Return False
  11.        End Try
  12.    End Function


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 9 Julio 2013, 19:07 pm
copia el mensaje de excepción completo, hay un botón que pone "copiar mensaje".

Código
  1. Load_Resource_To_Disk(My.Resources.ArchivoExterno, "C:\Process.exe")
  2. Process.Start("C:\Process.exe")
  3.  
  4.    Private Function Load_Resource_To_Disk(ByVal Resource As Byte(), ByVal Target_File As String) As Boolean
  5.        Try
  6.            Dim Buffer_FileStream As New IO.FileStream(Target_File, IO.FileMode.Create, IO.FileAccess.Write)
  7.            Buffer_FileStream.Write(Resource, 0, Resource.Length) : Buffer_FileStream.Close()
  8.            Return True
  9.        Catch ex As Exception
  10.            Return False
  11.        End Try
  12.    End Function
En fin..
Siento molestar tanto pero me da tres errores..
Error   1   'ArchivoExterno' es un tipo en 'Resources' y no se puede usar como expresión.   
Error   2   La instrucción no puede aparecer dentro de un cuerpo de método. Se supone el final del método.   

Sé que soy muy noob en esto pero lo necesito hacer..


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 9 Julio 2013, 19:41 pm
No me has copiado la excepción, sólo el mensaje del error.

Error   2   La instrucción no puede aparecer dentro de un cuerpo de método. Se supone el final del método

Supongo que eso te está pasando porque has copiado mi código sin hacer los cambios necesarios...

1.  las instrucciones las metes dentro de un procedimiento, esto:
Código
  1. Load_Resource_To_Disk(My.Resources.ArchivoExterno, "C:\Process.exe")
  2. Process.Start("C:\Process.exe")

2. "My.Resources.ArchivoExterno", "ArchivoExterno" lo tienes que modificar por el nombre de tu recurso...

Y así ya te funcionará.

Saludos


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 9 Julio 2013, 19:54 pm
No me has copiado la excepción, sólo el mensaje del error.

Supongo que eso te está pasando porque has copiado mi código sin hacer los cambios necesarios...

1.  las instrucciones las metes dentro de un procedimiento, esto:
Código
  1. Load_Resource_To_Disk(My.Resources.ArchivoExterno, "C:\Process.exe")
  2. Process.Start("C:\Process.exe")

2. "My.Resources.ArchivoExterno", "ArchivoExterno" lo tienes que modificar por el nombre de tu recurso...

Y así ya te funcionará.

Saludos
Eso ya lo hacía..
Me dice
Error   1   'Load_Resource_To_Disk' no está declarado. Puede que esté inaccesible debido a su nivel de protección.   
Error 2      'stryk' no es un miembro de 'resources'.
stryk es el .exe que quiero poner..

No sé si pongo bien el .exe como recurso ya que al añadirlo como recurso sólo le he dado en añadir recurso y he buscado el .exe .. t.T


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Eleкtro en 9 Julio 2013, 20:46 pm
Error   1 'Load_Resource_To_Disk' no está declarado. Puede que esté inaccesible debido a su nivel de protección.   

Estás intentando usar la función desde otro formulario, como te dice el error tienes que modificar el tipo de protección.

Código
  1. Public shared Function Load_Resource_To_Disk(ByVal bla bla bla...
  2. end function

Error 2 'stryk' no es un miembro de 'resources'.
No has agregado corréctamente el recurso al namespace "my.resources", arriba te expliqué como debes añadirlo.

Saludos!


Título: Re: Llamar a un ejecutable externo VB
Publicado por: Adrylek en 9 Julio 2013, 21:00 pm
Estás intentando usar la función desde otro formulario, como te dice el error tienes que modificar el tipo de protección.

Código
  1. Public shared Function Load_Resource_To_Disk(ByVal bla bla bla...
  2. end function
No has agregado corréctamente el recurso al namespace "my.resources", arriba te expliqué como debes añadirlo.

Saludos!
Lo añado como tú dices, se me pone en la carpeta Resources y nada más..