2010-08-11 7 views
7

J'ai essayé de démarrer une application à partir d'une application C#, mais elle ne démarre pas correctement. De la cmd l'application plus les arguments lancent une petite fenêtre montrant la sortie puis l'application en minimisé à la barre d'état système. Le lancement de l'application à partir de l'application C# en utilisant le code ci-dessous entraîne l'apparition du processus dans le gestionnaire de tâches mais rien d'autre, pas de fenêtre de sortie, pas d'icône de la barre d'état système. Quel pourrait être le problème?C# Lancer l'application avec plusieurs arguments

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

aussi essayé passer les éléments suivants

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

utilisant

Process.Start(Filename, args) 

également n'a pas fonctionné. J'apprécierais vraiment toute aide sur la façon d'aborder cela.

MISE À JOUR: Je pense que la question peut-être les multiples arguments qui doivent être transmis au processus

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

concernant

+0

Essayez de placer les arguments entre guillemets simples. – leppie

+0

@leppie Pas de changement – artsim

Répondre

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

Par exemple,

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

Je l'avais essayé et ça ne marche toujours pas – artsim

7

Je ne voir toute erreur dans votre code. Je l'ai écrit un petit programme qui imprime ses args à la console

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

et je l'ai mis dans C :, étant le nom de l'application « PrintingArgs.exe », donc je l'ai écrit un autre qui exécute le premier:

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(); 

cela me donne la sortie désirée de la liste des nombres. L'application qui appelle PrintingArgs se ferme lorsqu'elle atteint p.Start(), cela peut être évité en utilisant p.WaitForExit(); ou simplement Console.Read();. Aussi j'ai utilisé à la fois p.UseShellExecute et p.CreateNoWindow. Seulement dans le cas où

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

fait l'application PrintingArgs ne pas afficher une fenêtre (même si je ne mets que p.CreateNoWindow = true il montre une fenêtre). Maintenant, il me vient à l'esprit que peut-être vous passez les args dans un mauvais sens et que l'autre programme échoue et se ferme immédiatement, ou peut-être que vous ne pointez pas sur le bon fichier. Vérifiez les chemins et les noms, afin de trouver toute erreur que vous pourriez omettre. Aussi, en utilisant

Process.Start(fileName, args); 

n'utilise pas les informations que vous configurez avec StartInfo dans votre instance de processus.

Espérons que cela aidera, ce qui a trait

2

Avez-u définir votre ProcessWindowStyle Hidden? Ceci est mon code, fonctionne 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

Je ne sais pas si quelqu'un continue à suivre cela, mais voici ce que je suis venu avec. L'ajout d'un espace dans la chaîne a permis à deux arguments d'être passés dans le programme que je voulais exécuter. Le programme s'est exécuté sans problème après l'exécution du code.

Questions connexes