Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Launch application with multiple arguments

Tags:

c#

process

I have been trying to start an application from a C# application but it fails to start properly. From the cmd the application plus the arguments launch a small window showing the output then the application in minimized to the system tray.

Launching the application from the C# application using the code below results in the process appearing in the task manager but nothing else, no output window, no system tray icon. What could be the issue?

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

also tried passing the following

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

using

    Process.Start(Filename, args)

also did not work. Would really appreciate any help on how to tackle this.

UPDATE: I think the issue maybe the multiple arguments that are to be passed to the process

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

regards

like image 962
artsim Avatar asked Aug 11 '10 07:08

artsim


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

Is C language easy?

Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

Why is C named so?

Because a and b and c , so it's name is C. C came out of Ken Thompson's Unix project at AT&T. He originally wrote Unix in assembly language. He wrote a language in assembly called B that ran on Unix, and was a subset of an existing language called BCPL.


2 Answers

I don't see any mistake in your code. I have written a little program that prints out its args to the console

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

and then I have put it in C:, being the name of the app "PrintingArgs.exe", so I have written another one that executes the first:

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

this gives me the desired output of the list of numbers. The app that calls PrintingArgs exits as it reachs p.Start(), this could be avoided by using p.WaitForExit(); or just Console.Read();. Also I have used both p.UseShellExecute and p.CreateNoWindow. Only in the case that

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

makes the PrintingArgs app not to show a window (even if I put only p.CreateNoWindow = true it shows a window).

Now it comes to my mind that maybe your are passing the args in a wrong way and makes the other program to fail and close inmediately, or maybe you are not pointing to the right file. Check paths and names, in order to find any mistake you could omit. Also, using

 Process.Start(fileName, args);

does not uses the info you set up with StartInfo into your Process instance.

Hope this will help, regards

like image 192
Sergio Rosas Avatar answered Oct 11 '22 14:10

Sergio Rosas


Not sure if anyone is still following this but here is what I came up with.

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

Adding a space in the string allowed two arguments to be passed into the program I wanted to run. The program ran without issue after executing the code.

like image 28
IModulo5 Avatar answered Oct 11 '22 14:10

IModulo5