none
Comillas en arguments de Process RRS feed

  • Pregunta

  • Hola que tal, pues bien quisiera pedir su ayuda en como iniciar un process desde un Form, el ejecutable al ser iniciado desde linea de comandos es asi: Reader9.exe /a "page=8&zoom=scale&navpanes=0=OpenActions" "Archivo.pdf"
    Si cargo los argumentos en la pantalla de propiedades todo funciona bien, pero necesito hacerlo durante la ejecucion, ya que requiero que se puedan cambiar los argumentos. He intentado lo propuesto en msdn usando un char '"', concatenando el ascii, una constante, el \", pero todos esos metodo introducen la \, dejando totalmente inutilizables los argumentos, hay alguna forma de evitar que se introduzca la diagonal invertida?
    miércoles, 3 de junio de 2009 5:40

Respuestas

  • Hola Javier.

    a ver, aqui hay dos cosas a tener en cuenta.

    una es que puedes establecer la cadena con @"cadena", la arroba le dice al compilador que esa cadena se escriba literalmente con lo que si escribes esto:
    (la excepcion son las comillas que se tienen que escribir dobles para establecer una comilla)

    string cadena = @"Reader9.exe /a ""page=8&zoom=scale&navpanes=0=OpenActions"" ""Archivo.pdf"" ";

    La cadena contendra esto:  Reader9.exe /a "page=8&zoom=scale&navpanes=0=OpenActions" "Archivo.pdf".

    Las cadenas de escape tambien sirven y puedes poner \" para establecer una comilla pero sin la @, ya que si no lo interpretara literalmente.

    La segunda es que aun con todo esto veras que en el inspector te sigue poniendo \" en cualquier caso, esto es por que el inspector te muestra lo que hay en memoria (mas o menos), con lo cual para ver la cadena resultante que sera la real, debes hacer click en la lupa que tiene la variable en el inspector y te saldra una ventana que te pondra la cadena con el formato de salida real.
    Saludos
    David González
    miércoles, 3 de junio de 2009 7:12
  • Hola Jairo.

    has probado a usar los parametros sin separar las comillas, es decir:

    Reader9.exe /a "page=8&zoom=scale&navpanes=0=OpenActions Archivo.pdf"

    o

    Reader9.exe /a page=8&zoom=scale&navpanes=0=OpenActions Archivo.pdf

    las comillas se suelen usar solo cuando hay rutas o comandos con espacios.
    Puedes probar tambien a crear un acceso directo con esta ruta y probar variaciones, estoy casi seguro que las comillas son el problema.

    Ya contaras como te ha ido
    Saludos
    David González
    miércoles, 3 de junio de 2009 18:25

Todas las respuestas

  • Hola Javier.

    a ver, aqui hay dos cosas a tener en cuenta.

    una es que puedes establecer la cadena con @"cadena", la arroba le dice al compilador que esa cadena se escriba literalmente con lo que si escribes esto:
    (la excepcion son las comillas que se tienen que escribir dobles para establecer una comilla)

    string cadena = @"Reader9.exe /a ""page=8&zoom=scale&navpanes=0=OpenActions"" ""Archivo.pdf"" ";

    La cadena contendra esto:  Reader9.exe /a "page=8&zoom=scale&navpanes=0=OpenActions" "Archivo.pdf".

    Las cadenas de escape tambien sirven y puedes poner \" para establecer una comilla pero sin la @, ya que si no lo interpretara literalmente.

    La segunda es que aun con todo esto veras que en el inspector te sigue poniendo \" en cualquier caso, esto es por que el inspector te muestra lo que hay en memoria (mas o menos), con lo cual para ver la cadena resultante que sera la real, debes hacer click en la lupa que tiene la variable en el inspector y te saldra una ventana que te pondra la cadena con el formato de salida real.
    Saludos
    David González
    miércoles, 3 de junio de 2009 7:12
  • Que tal, gracias por responder, la solucion que has dado al parecer ya funciona, usando el visor de texto del inspector la cadena se muestra tal cual debe ser, sin embargo el programa sigue sin aceptar los parametros adicionales, intentare usar la funcion string Replace(); a partir de los parametros adicionales de la ventana propiedades y que busque una subcadena especifica, de cualquier modo indicare los resultados. Saludos EDITO: Copie la cadena original del arguments especificada en el archivo Form1.Designer.cs, aunque curiosamente es el mismo formato usando \" para indicar comillas dobles es decir en codigo es: process1.StartInfo.Arguments = "/a \"page=X&zoom=scale&navpanes=0=OpenActions\" \"Beginning_SQL.pdf\""; Saludos
    miércoles, 3 de junio de 2009 15:01
  • Hola Jairo.

    has probado a usar los parametros sin separar las comillas, es decir:

    Reader9.exe /a "page=8&zoom=scale&navpanes=0=OpenActions Archivo.pdf"

    o

    Reader9.exe /a page=8&zoom=scale&navpanes=0=OpenActions Archivo.pdf

    las comillas se suelen usar solo cuando hay rutas o comandos con espacios.
    Puedes probar tambien a crear un acceso directo con esta ruta y probar variaciones, estoy casi seguro que las comillas son el problema.

    Ya contaras como te ha ido
    Saludos
    David González
    miércoles, 3 de junio de 2009 18:25