- - PR -
プロセス間のパラメーターの受け渡しについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-20 15:14
目的
プログラムが多重起動したら、すでに起動しているプログラムにコマンドラインを渡し、あとから起動したプロセスは終了したい。 前提 ユーザーは不特定多数。.net Framework以外は特別な設定やインストールは不要としたい。 試したこと ここを参考に、多重起動の防止と、起動済みプロセスへの参照は取得できました。 http://www.atmarkit.co.jp/fdotnet/dotnettips/151winshow/winshow.html MarshalByRefObjectを使ってみました。 Control.Invokeを使って正しいスレッドにマーシャリングしてくださいというエラーメッセージが出ました。 なんとなく理由は理解できなくもありませんが、tcpやhttpを使わずに通信したいので、この方法は根本的に駄目そうなので深くは追求せず。 MessageQueueを使ってみました。 それなりのサービスがインストールされていることをユーザーに強要してしまうようですね。 SendMessage APIでWM_COPYDATAを送る。 受信側のイベントハンドラをFormのどこにどう書けばよいのかわかりません。 目的が果たせれば通信手段は何でもよいのですが、うまい方法はないでしょうか? | ||||
|
投稿日時: 2004-10-20 16:22
WM_COPYDATA のイベントハンドラなんてものは無いので、Form.WndProc をオーバーライドして、Message.Msg が WM_COPYDATA だったら必要な処理をしてください。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2004-10-20 17:27
ありがとうございます。
おかげさまでWM_COPYDATAを受信することができました。 |
1