イメージ 1

イメージ 2

プログラム(多重起動防止)についてプログラミングしてみた。いろいろと方法があるが、2つほど試しにやってみた。1つはMutexのプロセス管理方法、2目つはProcessメッソドを使った方法である。結果から言うと1つ目は、うまく動作していない。現在は保留状態である。なので今は動いているProcessメソッドを用いた方法を採用する。
内容はいたって原理的で、現在のプロセスに登録されている中に、起動しようとしているプロセス名があるかを調べて、そのブール値をもって判断する方法である。
メインは次の一行です。

Process::GetProcessesByName("hamlogw")->Length>0);

この一行を使ったif分分岐をハムログ起動のボタンの最初に書くだけです。画像でコードとメッセージボックス表示状態を載せました。いたって簡単に出来てしまいます。

 1つ目のMutexを使った方法はうまく動作していない。オーソドックスな方法なはずなのだが、どうも次のコード中のif分の判断が出来ていないようだ。
【未動作Mutex】-------------------------------------
using namespace System::Diagnostics;
using namespace System::Threading;

Mutex^ mu = gcnew Mutex(false,"Ham");
if ( mu->WaitOne(0,false) == false )
{
MessageBox::Show("Hamlogw.exeは起動中です。");
return;
}else{
先のハムログ起動コード(省略)
......
mu->ReleaseMutex(); //Mutexの開放
}
----------------------------------------------------
このMutexを使った方法は後で再度やってみたいと思っている。
最近は朝にブログを書くようになってしまった。しかし朝早い時間帯は静かでとても心が休まる。MusicTVで洋楽を流しながらコーディングするのも乙なものだ。