2010-12-28 36 views
3

私は連絡先管理プログラムを作成しています。私はコマンドラインの引数を読み、私が見つけたものに基づいてさまざまな方法を実行する方法を知っています。例えばすでに実行中のプロセスにコマンドライン引数を渡すにはどうすればよいですか?

program.exe "John Doe"は単にprogram.exeを実行しているのに対し、「ジョン」プログラムの新しいインスタンスを起動し、それがジョン・ドウという名前の、program.exe -s Johnは、プログラムの新しいインスタンスを起動し、名前の連絡先を検索します見つかった最初の連絡先を開きます空の検索画面でプログラムの新しいインスタンスを開きます。

ただし、プログラムのインスタンスを1つだけ実行したいと思います。したがって、別のプログラムがprogram.exe "John Doe"を呼び出すと、プロセスがすでに実行されている場合、そのプロセスに引数が渡され、新しいウィンドウを開くのではなく新しい検索に切り替わります。

以前に実行されていたプロセスやプロセス間の通信を探す必要があることは知っていますが、私は.NETの多くをやっていないし、正しい方向に着手したり、 。

+1

を頼まれましたか? –

+0

'program.exe'は私が書いているプログラムです。まだ名前はありません。はい、私はそれを所有しています。 – dlras2

+1

重複していますか? http://stackoverflow.com/questions/917883/c-how-to-single-instance-application-that-accepts-new-parameters –

答えて

3

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

Visual BasicのDLLは、あなたが他のインスタンスを検出する上で自分自身を殺すことができる番目のインスタンスと第二のインスタンスの引数を取得することが可能なStartupNextInstanceイベントがありWindowsFormsApplicationBaseを持っています。

これは、あなたがPROGRAM.EXEを「所有」か、またはそれが第三者に属してすでにC# : how to - single instance application that accepts new parameters?

1

一つの方法は、WCFサービスをホストPROGRAM.EXE持っているだろう。次に、コマンドライン引数を使用して別のインスタンスを起動すると、そのサービスに対するWCFクライアントになり、引数をサービスに送信して終了します。

関連する問題