- - PR -
アプリケーションが実行中か検出する方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-09-09 14:04
アプリケーションを実行する際に
同じアプリケーションが既に実行中かどうかを検出することは可能なのでしょうか? 可能であれば 既に実行中の場合はそれ以上実行できないようにしたいのですが どうしたらいいのでしょうか? | ||||||||
|
投稿日時: 2003-09-09 15:14
可能です
GetProcessesByNameメソッドをご覧になるといいと思います。 If (UBound(Diagnostics.Process.GetProcessesByName _ (Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0) = True Then Exit Sub End If のような感じで可能だと思います。 | ||||||||
|
投稿日時: 2003-09-09 15:20
同じアプリケーションと言ってもそのアプリケーションが自前のものかどうかで
かなり変わってきます。 まず、自前のアプリケーションの場合、要するにそのアプリケーションが2重起動 しないように、自分自身の中に「既に起動されていればなにもせず終了」するよう にしておけばよいでしょう。 (VC系なら、mutex : MUTual EXclusion、VB系ならApp.PrevInstance あたり かな?.netが無いので不確かですが) 問題は自前のアプリから他のアプリを監視する場合ですが、動作しているかどう かのチェックは、インスタンスやクラス、ハンドル等アプリケーション固有の物 を監視すれば可能ですが、その後起動されないようにするというのはかなり難しい です。1つ目はそのままで、新しい方を強制終了させるとなると、変なタイミング で強制終了しても厄介なことになったりするので...できれば起動されるアプリ 側に上記の仕掛けを入れるほうが... | ||||||||
|
投稿日時: 2003-09-09 15:58
こんにちは。
こんなスレッドがあったりします。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3559&forum=7 | ||||||||
|
投稿日時: 2003-09-09 16:03
PoHさん、Beatleさん
早速のレスありがとうございます。 言い忘れていましたが 言語はC#を使用しています。 >If (UBound(Diagnostics.Process.GetProcessesByName _ >(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0) = True Then >Exit Sub >End If C#では“UBound”という関数が使えないようなのですが どうしたらいいのでしょうか? | ||||||||
|
投稿日時: 2003-09-09 16:09
Jittaさんありがとうございます。
早速見てみましたが こちらもVBですネ... しかもちょっと私には理解が苦しみます... 素人の私には難しいです。 | ||||||||
|
投稿日時: 2003-09-09 16:30
Jittaさんのレスも難しく見えてすごく分かり易く
書いてくださっているので 焦らずゆっくり読んで見てください。 ちなみにC#ということですが、 VB.NETのコード書いてしまい申し訳ないです。 出来れば最初に環境等を書いておいていただけるとありがたいです。 C#では・・・
でいけるでしょうか? JittaさんBeatleさんのでいえば
てなところで、いかがでしょうか? | ||||||||
|
投稿日時: 2003-09-09 16:47
PoHさんありがとうございます。
早速やってみました ばっちりうまくいきました!! C#のコードを見てやっと なるほど!と思いました。 本当に助かりました。 |