Pregunta

Estoy intentando crear un formulario de aplicación C # que me permite utilizar todos los de mi anterior C ++ programas de un programa central.

Soy capaz de abrir los archivos EXE con Process.Start(), sin embargo, no se compila el código correctamente.

Ejemplo código:

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");

Con ello se abre la consola y actuar como que se está ejecutando, pero no correr como cuando normalmente compilar fuera del editor de C ++. ¿Hay una necesidad de que la variable startinfo al conjunto para significar que se trata de un programa en C ++ o algo en esa línea?

Además, ¿hay alguna manera de ejecutar un programa en C ++ usando process.start que permitirá que pasarla a través de variables de la línea de comandos a través de argc y argv?

Gracias

¿Fue útil?

Solución

Sólo hay un par de diferencias cuando se utiliza Process.Start la manera que lo hizo frente a cuando se acaba de ejecutar el programa directamente. Ambos pueden abordarse mediante el uso de ProcessStartInfo .

  1. WorkingDirectory no será el mismo. Ponga esto en la ruta que contiene el ejecutable para obtener el mismo comportamiento.
  2. UseShellExecute true, por lo las ventanas cáscara se utilizan para ejecutar el proceso.

En cuanto a la adición de argumentos de línea de comandos: Usted puede hacer eso a través de ProcessStartInfo.Arguments . No debería ser una necesaria debido a que es una aplicación de C ++, sin embargo.

Otros consejos

Hasta el momento sólo hay información suficiente para responder a su pregunta final. Sí, puede incluir argumentos de línea de comando como muestra aquí . Vistazo a la sección titulada "Programa === que corre EXE (C #) ==="

Para añadir argumentos de línea de comando:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();

Después de que el programa ha sido compilado en un archivo EXE, no debería importar el idioma en que fue escrito.

En cuanto a los argumentos del programa, es necesario echar un vistazo a la clase ProcessStartInfo, y la anulación de Process.Start () que lo utiliza: Process.Start (ProcessStartInfo)

Me enfrentaba a un problema similar en pitón, ¿Está esperando la salida verbosa?

En mi caso, el búfer de salida se llenó y por lo tanto la ejecución estancado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top