开发者

How can I pass command-line arguments to an already-running process?

I am writing a contact management program. I know how to read command-line arguments, and perform different methods based on what I find.

For example, program.开发者_如何学Goexe "John Doe" will start a new instance of the program and open up the first contact it finds named John Doe, program.exe -s John will start a new instance of the program and search for contacts named "John," whereas simply running program.exe will open start a new instance of the program with a blank search screen.

I would like to only run a single instance of the program, however. So when another program calls program.exe "John Doe", if there is already a process running, the arguments will be passed to that process and switch to a new search rather than opening a new window.

I know that this requires looking for previously running processes and inter process communication, but I've not done much of either in .Net and am having trouble getting started in the right direction or finding any good tutorials on the specific subject.


http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx

Visual basic dll has a WindowsFormsApplicationBase that has StartupNextInstance event in which you can get the arguments of the second instance and the second instance can kill itself on detecting other instances.

This has been asked already C# : how to - single instance application that accepts new parameters?


may be this post can help you. See Here , also using IPC Channel


One way to do it would be to have program.exe host a WCF service (as you seem to have guessed from your tag). Then, when another instance is started, with command-line arguments, it would be a WCF client to that service, and send the arguments to the service, then exit.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜