2010-08-11 33 views
7

He intentado iniciar una aplicación desde una aplicación C# pero no se inicia correctamente. Desde el cmd, la aplicación más los argumentos inician una pequeña ventana que muestra el resultado y luego la aplicación se minimiza en la bandeja del sistema.C# Iniciar aplicación con múltiples argumentos

Al iniciar la aplicación desde la aplicación C# utilizando el siguiente código, el proceso aparece en el administrador de tareas pero nada más, sin ventana de salida, ni icono de la bandeja del sistema. ¿Cual podría ser el problema?

myProcess.StartInfo.FileName = ...; 
    myProcess.StartInfo.Arguments = ...; 
    myProcess.Start(); 

también trató de pasar la siguiente

myProcess.StartInfo.RedirectStandardOutput = true; //tried both 
    myProcess.StartInfo.UseShellExecute = false; //tried both 
    myProcess.StartInfo.CreateNoWindow = false; 

usando

Process.Start(Filename, args) 

también no funcionaba. Realmente agradecería cualquier ayuda sobre cómo abordar esto.

ACTUALIZACIÓN: Creo que el problema tal vez los múltiples argumentos que han de ser enviado al proceso

RunMode=Server;CompanyDataBase=dbname;UserName=user;PassWord=passwd;DbUserName=dbu;Server=localhost;LanguageCode=9 

respecto

+0

Intente adjuntar los argumentos entre comillas simples. – leppie

+0

@leppie Sin cambios – artsim

Respuesta

1
 System.Diagnostics.Process.Start(FileName,args); 

Ej

 System.Diagnostics.Process.Start("iexplore.exe",Application.StartupPath+ "\\Test.xml"); 
+0

Lo intenté y todavía no funciona – artsim

7

no lo hago vea cualquier error en su código. He escrito un pequeño programa que imprime sus argumentos a la consola

static void Main (string[] args) 
{ 
    foreach (string s in args) 
     Console.WriteLine(s); 
    Console.Read(); // Just to see the output 
} 

y luego lo he puesto en C :, es el nombre de la aplicación "PrintingArgs.exe", por lo que he escrito otro que ejecuta el primero:

Process p = new Process(); 
p.StartInfo.FileName = "C:\\PrintingArgs.exe"; 
p.StartInfo.Arguments = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18"; 
p.Start(); 

Esto me da el resultado deseado de la lista de números. La aplicación que llama a PrintingArgs sale cuando llega a p.Start(), esto se puede evitar usando p.WaitForExit(); o solo Console.Read();. También he usado tanto p.UseShellExecute como p.CreateNoWindow. Sólo en el caso de que

p.UseShellExecute = false; 
p.CreateNoWindow = true; 

hace que la aplicación PrintingArgs no mostrar una ventana (incluso si pongo solamente p.CreateNoWindow = true se muestra una ventana).

Ahora me viene a la mente que tal vez estás pasando los argumentos de una manera incorrecta y hace que el otro programa falle y se cierre de inmediato, o tal vez no estés apuntando al archivo correcto. Verifique las rutas y los nombres, para encontrar cualquier error que pueda omitir. Además, el uso

Process.Start(fileName, args); 

no utiliza la información se configura con StartInfo en su instancia de proceso.

Esperamos que esto ayude, respecto

2

have u configurar su ProcessWindowStyle en Oculto? Este es mi código, que trabaja muy bien:

Process p=new Process(); 
p.StartInfo.FileName = filePath;//filePath of the application 
p.StartInfo.Arguments = launchArguments; 
p.StartInfo.WindowStyle = (ProcessWindowStyle)ProcessStyle;//Set it to **Normal** 
p.Start(); 
4

No estoy seguro si alguien todavía está siguiendo esto, pero esto es lo que ocurrió.

string genArgs = arg1 + " " + arg2; 
string pathToFile = "Your\Path"; 
Process runProg = new Process(); 
try 
{ 
    runProg.StartInfo.FileName = pathToFile; 
    runProg.StartInfo.Arguments = genArgs; 
    runProg.StartInfo.CreateNoWindow = true; 
    runProg.Start(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("Could not start program " + ex); 
} 

Agregar un espacio en la cadena permitió pasar dos argumentos al programa que quería ejecutar. El programa se ejecutó sin problemas después de ejecutar el código.

Cuestiones relacionadas