Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#8461
No me has copiado la excepción, sólo el mensaje del error.

Cita de: Adrylek en  9 Julio 2013, 19:07 PMError   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 (vbnet) [Seleccionar]
Load_Resource_To_Disk(My.Resources.ArchivoExterno, "C:\Process.exe")
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
#8462
Cita de: Adrylek en  9 Julio 2013, 18:50 PMsi 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".

Cita de: Adrylek en  9 Julio 2013, 18:50 PMSólo quiero saber como cargarlo al disco como dices tú..

Código (vbnet) [Seleccionar]
Load_Resource_To_Disk(My.Resources.ArchivoExterno, "C:\Process.exe")
Process.Start("C:\Process.exe")

   Private Function Load_Resource_To_Disk(ByVal Resource As Byte(), ByVal Target_File As String) As Boolean
       Try
           Dim Buffer_FileStream As New IO.FileStream(Target_File, IO.FileMode.Create, IO.FileAccess.Write)
           Buffer_FileStream.Write(Resource, 0, Resource.Length) : Buffer_FileStream.Close()
           Return True
       Catch ex As Exception
           Return False
       End Try
   End Function
#8463
@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.
#8464
Cita de: .:Weeds:. en  9 Julio 2013, 13:41 PMHay algún caso donde se guarde en la ruta que tu especificaste?

Claro, es porque uso Chrome portable. -> http://portableapps.com/apps/internet/google_chrome_portable

Pero no le des muchas vueltas a eso, poca gente usa portables, pero si quieres que tu aplicación séa lo más funcional pues deberías añadir como mínimo un control de errores por si el usuario no tiene el archivo de preferencias en la ruta a la que estás accediendo...

EDITO: Los programadores muchas veces se olvidan y no tienen en cuenta que existen las instalaciones desatendidas y los portables... en los programas que me permiten cambiar el directorio de guardado por defecto (%programdata% o %appdata%) siempre se lo cambio por otro directorio, y eso es una protección adicional anti-viral :).

Saludos!
#8465
Cita de: .:Weeds:. en  8 Julio 2013, 23:14 PM
le he añadido bien la ruta pero me da el siguiente error
"Caracteres no validos en la ruta de acceso" en la linea:
IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)

Lo escribí al vuelo sin testearlo, lo que ocurre es que por confusión intercambié la posición los parámetros aquí:
Código (vbnet) [Seleccionar]
IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)

Así si:
Código (vbnet) [Seleccionar]
IO.File.WriteAllText(GoogleFile, String.Join(Environment.NewLine, Preferences))

Este ya funciona (con la ruta correcta para tu PC):
Código (vbnet) [Seleccionar]
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim MyExtension As String, GoogleFile As String, Preferences() As String

       MyExtension = """aakhlmakppmkkmfkoibponkmmpgpmjgl"": {""blacklist"": true},"
       GoogleFile = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Google\Chrome\User Data\Default\Preferences")
       Preferences = IO.File.ReadAllLines(GoogleFile)

       For X As Int32 = 0 To Preferences.Length - 1
           If Preferences(X).Trim = """settings"": {" Then
               Preferences(X) &= MyExtension
               IO.File.WriteAllText(GoogleFile, String.Join(Environment.NewLine, Preferences))
               Exit For
           End If
       Next
   End Sub


PD: No es necesario identar las lineas del JSON (Google chrome lo ordena por si mismo), pero bueno, si prefieres hacer un string multilinea como en tu ultimo code es tu decisión.

Saludos.
#8466
Ahora está todo mucho más claro, podrías haber comentado lo de Google desde el principio xD.

Puedes hacerlo a lo experto como lo haría Novlucker usando alguna librería para manejar JSON, o también puedes usar esta alternativa que hice:

Código (vbnet) [Seleccionar]
        Dim MyExtension As String, GoogleFile As String, Preferences() As String

        MyExtension = """aakhlmakppmkkmfkoibponkmmpgpmjgl"": {""blacklist"": true},"
        GoogleFile = "C:\Program Files\Google Chrome\Data\profile\Default\Preferences"
        Preferences = IO.File.ReadAllLines(GoogleFile)

        For X As Int32 = 0 To Preferences.Length - 1
            If Preferences(X).Trim = """settings"": {" Then
                Preferences(X) &= MyExtension
                IO.File.WriteAllText(String.Join(Environment.NewLine, Preferences), GoogleFile)
                Exit For
            End If
        Next


Saludos
#8467
Cita de: Adrylek en  8 Julio 2013, 20:10 PMyo 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
#8468
Cita de: Adrylek en  8 Julio 2013, 19:59 PMGracias 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
#8469
Scripting / Re: renombrar archivos
8 Julio 2013, 20:03 PM
Asdexiva, especifica el lenguaje cuando formules una pregunta, no somos adivinos, aunque me imagino que lo quieres hacer en Batch.

Lo que pides es muy fácil, se hace en pocas líneas, pero...

¿Estás seguro de lo que pides?.

Si no le has modificado la extensión y el archivo original ya estaba con extensión EXE entonces es por algo.

¿Al hacer doble click sobre uno de esos archivos exe, se muestra una ventana de WinRar y se empieza a descomprimir lo que hay dentro?... te lo digo porque encontes el tipo de archivo no es "RAR", sino "SFX" (.exe), y en ese caso lo que quieres hacer no deberías hacerlo porque ya tienen la extension correcta (.exe).

Aparte de eso, no tiene sentido querer dejar un archivo sin extensión, si haces eso el SO no va a poder reconocer el tipo de archivo ni el programa asociado a ese tipo de archivo, por algo existen las extensiones...

Saludos!
#8470
Estructura de la carpeta de tu proyecto:

.\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 (vbnet) [Seleccionar]
Process.Start(".\Archivo externo.exe", "- Argumentos")

Así de simple.

Saludos!