Exécuter C ++ exe de la forme C # en utilisant Process.Start ()
-
22-09-2019 - |
Question
Je suis en train de créer une application de forme C # qui me permettra d'utiliser tous mes précédents programmes C ++ d'un programme central.
Je suis en mesure d'ouvrir les exes avec Process.Start()
, mais il ne compile pas le code correctement.
Exemple de code:
Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");
Cela fera la console et d'agir comme il est en cours d'exécution, mais il ne fonctionne pas comme quand je compile normalement de l'éditeur du C. Y at-il une variable startinfo
je dois mettre pour signifier que c'est un programme C ++ ou quelque chose le long de cette ligne?
En outre, est-il possible d'exécuter un programme C ++ en utilisant process.start
qui me permettra de le transmettre des variables à travers la ligne de commande via argc
et argv
?
Merci
La solution
Il y a seulement quelques différences lorsque vous utilisez Process.Start la façon dont vous avez fait contre lorsque vous exécutez juste le programme directement. Les deux peuvent être résolus en utilisant ProcessStartInfo .
- WorkingDirectory ne sera pas la même. Réglez ce paramètre sur le chemin contenant l'exécutable pour obtenir le même comportement.
- UseShellExecute true, donc la coquille de fenêtres est utilisé pour exécuter le processus.
En ce qui concerne l'ajout d'arguments de ligne de commande: Vous pouvez le faire via
Autres conseils
Jusqu'à présent, il n'y a que suffisamment d'informations pour répondre à votre dernière question. Oui, vous pouvez inclure des arguments de ligne de commande comme présentés ici . Regardez la section intitulée "=== programme qui fonctionne EXE (C #) ==="
Pour ajouter des arguments de ligne de commande:
Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();
Une fois le programme a été compilé dans un fichier EXE, il ne devrait pas question quelle langue il a été écrit dans.
En ce qui concerne les arguments du programme, vous devez jeter un oeil à la classe ProcessStartInfo, et le remplacement de Process.Start () qui l'utilise: Process.Start (ProcessStartInfo)
Je fait face à un problème similaire en python, attendez-vous une sortie verbeuse?
Dans mon cas, le tampon de sortie a pleine et donc l'exécution au point mort.