Ejecutar exe C ++ de C forma # usando Process.Start ()
-
22-09-2019 - |
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
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 .
- WorkingDirectory no será el mismo. Ponga esto en la ruta que contiene el ejecutable para obtener el mismo comportamiento.
- 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.