2012-05-11 11 views
8

Estoy intentando invocar una aplicación wpf desde otra aplicación wpf. La invocación de aplicaciones WPF hace la llamadaUsar process.start en una aplicación wpf para invocar a otra aplicación wpf

ProcessStartInfo BOM = new ProcessStartInfo(); 

BOM.FileName = @"D:\WPFAPPLICATION.exe"; 

BOM.Arguments = temp; 

Process.Start(BOM); 

Ahora en la aplicación invocada, trato de recuperar el argumento pasado usando

string arguments =Process.GetCurrentProcess().StartInfo.Arguments; 

Sin embargo, no se pasan los argumentos. ¿¿Por qué es esto??

También probé un método alternativo donde en:

public partial class App : Application 
    { 
    public static String[] mArgs; 

    private void Application_Startup(object sender, StartupEventArgs e) 
    { 

     if (e.Args.Length > 0) 
     { 
      mArgs = e.Args; 


     } 
    } 
    } 
    } 

Sin embargo, esto no funcionaba !!! Por favor AYUDA !!

+1

¿Seguro 'temp' en realidad tiene el valor que esperar? También tuve problemas para recuperar argumentos de la información de inicio antes de usar Powershell, olvidé cuál era el problema, pero creo que la aplicación todavía se ejecuta con los argumentos correctos, pero es posible que no se conserve en la información de inicio. –

+0

Estoy seguro de que la temperatura tiene el valor deseado. Pero no creo que se pase a la aplicación wpf que se llama. – Sana

+1

@Sana, ¿puedes mostrar la declaración de 'temp'? – Jodrell

Respuesta

2

Bueno, finalmente encontré una solución a mi pregunta si alguien estaba interesado. Mientras que en la aplicación de llamada Mantuve el mismo código que he utilizado anteriormente:

ProcessStartInfo BOM = new ProcessStartInfo(); 
BOM.FileName = @"D:\WPFAPPLICATION.exe"; 
BOM.Arguments = temp; 
Process.Start(BOM); 

En la llamada aplicación con el fin de recibir argumentos éxito que simplemente tenía que:

System.Text.StringBuilder strbuilder= new System.Text.StringBuilder(); 


    foreach (String arg in Environment.GetCommandLineArgs()) 
    { 
     strbuilder.AppendLine(arg); 
     barcode = arg; 
    } 
    psnfo = strbuilder.ToString(); 

no estaba manejando los argumentos enviado al proceso de la manera correcta

así que al mostrar psnfo

el código devuelve:

D:\WPFAPPLICATION.exe temp 

Fuente: http://www.codeproject.com/Questions/386260/Using-process-start-in-a-wpf-application-to-invoke

3

Intente utilizar la clase Environment para obtener los argumentos de la línea de comandos.

string[] args = Environment.GetCommandLineArgs 

o utilice la cadena [] que se pasa a su método principal de su aplicación WPF (App.xaml.cs).

public partial class App : Application { 

    protected override void OnStartup(StartupEventArgs e) { 
     string[] args = e.Args; 
    } 
} 

Nota: La llamada

string arguments =Process.GetCurrentProcess().StartInfo.Arguments; 

no devolverá ningún valor. Consulte este MSDN entrada

Si no utilizó el método Start para iniciar un proceso, la propiedad StartInfo no refleja los parámetros utilizados para iniciar el proceso. Por ejemplo, si usa GetProcesses para obtener una matriz de procesos que se ejecutan en la computadora, la propiedad StartInfo de cada Proceso no contiene el nombre original o los argumentos utilizados para iniciar el proceso.

+0

pero usé el método de inicio en la aplicación de llamada para iniciar el proceso – Sana

+0

Utilicé un método similar al sugerido anteriormente (ver la edición) ... Pero tampoco funcionó. – Sana

+0

@Sana pero no desde adentro de la aplicación iniciada – Jodrell

Cuestiones relacionadas