「アプリの二重起動を防止する」って、どうやれば?

解決


ショコラ  2002-02-08 11:41:04  No: 535  IP: [192.*.*.*]

ども、はじめまして。ショコラといいます。

Delphi6を使い始めたばかりなのですが、
このHPの「過去のTips集」→「Win32API」にある、

「アプリの二重起動を防止する」

が、具体的にどうすればいいのか、分かりません。
既に、アプリは作っていて(単一のプロジェクト)きちんと動いています。
ソレを、多重起動しないようにしたいと思っているのです。

勉強不足すぎですか?

編集    削除
まいるど  2002-02-08 12:32:47  No: 536  IP: [192.*.*.*]

変更するのは、通常表示されない Project のソースです。
メニューの「プロジェクト」-「ソース表示」をクリックすれば、
Project のソースが表示されます。

もし、ショコラさんの
Projectソース名が Project1で、
ユニットファイル名が Unit1で、
フォーム名が デフォルトの Form1のままならば、
ショコラさんの Project1 のソースをすべて消して、
「アプリの二重起動を防止する」のサンプルソースをそっくりコピー、貼り付け
すればOKです。
そうでなければ、該当の名前の部分を書き換えてください。

なお、2ヵ所の'EX_Mutex'という文字列は、他で使われていないユニークな
文字列(自分の名前など)であれば何でもいいのです。

編集    削除
ショコラ  2002-02-09 04:00:48  No: 537  IP: [192.*.*.*]

ども、まいるどさん。こんばんは。

私も、まいるどさんが書いていらっしゃるような意味だろうと思って、
やってはみたのですが、うまくいかないんです(再度、やってみました)。

たとえば、uses に unit名が二個登録されてるのが問題?
uses
  Forms,
  ab1 in 'ab1.pas' {Form1},
  sgform2 in 'sgform2.pas' {sgForm};

二番目の、sgform2 の行を除去すると、確かに多重起動できないようになるのですが、
今度は当然、sgform を呼び出せなくなるわけで(泣)。

編集    削除
ショコラ  2002-02-09 04:52:14  No: 538  IP: [192.*.*.*]

ども、まいるどさん。またまた、こんばんは。

今、上の投稿をした後、もう一度、
今度は「秀丸」に、元のソースと、Tipsの記事を貼り付けて、
元のソースを補完していく形で書き上げ、整形し、Delphiに書き戻したところ、
いけちゃいました!!>まるで、今までのことが全部ウソだったみたく…

う〜ん。何がいけなかったんでしょう?
カンマとか、セミコロンとか、スペースとか、不用意な位置に入っていたのでしょうか。
>> 実は、文字の左側に入れるスペースの意味が、まだよく分かっていないのです。
見様見真似でやってるだけで(^^;;

でも、ホントにありがとうございました。
まいるどさんが、「こうすれば!」って言ってくれたので、
「やっぱソレでいいんだ」って、
自信を持ってやり続けたことが成功のカギだったわけで…。

また、質問しに来たときは、どうかよろしくお願いします。

編集    削除
まいるど  2002-02-09 08:39:06  No: 539  IP: [192.*.*.*]

実はサンプルコードをコピーすると、
行の先頭に全角スペースが入っているのでコンパイルエラーになります。
まあ、IDEのエディタなら赤くなって気づくのですが、普通のエディタでは
気づかない事が多いです。

HTMLでサンプルコードを書く時には、<pre>〜</pre>タグではさめば半角スペースもそのまま有効にすることが出来ます。
管理人さんにお願い。
サンプルコードを<pre>〜</pre>タグではさんで、全角スペースを半角スペースに直して〜。

それから、ショコラさんが示したコードでは、
Forms, の後に Windows, を入れ忘れてますね。
この手のミスは誰でもありがちですが、エラーメッセージを見れば原因は
分かります。

編集    削除
ショコラ  2002-02-09 12:09:29  No: 540  IP: [192.*.*.*]

ども、まいるどさん。こんばんは。

> まあ、IDEのエディタなら赤くなって気づくのですが、普通のエディタでは
> 気づかない事が多いです。

そうそう。朱色になってました。いちお、ソレ。削除はしてたんですけど。

> Forms, の後に Windows, を入れ忘れてますね。

問題は、コレだったんですね!
ていうか、元々のコードに入ってなかったんで、逆に入れるとエラーになる…
そう思い込んでしまったのが「致命的な、私のエラー」だったと言えます。

今度は、少しでもファイルサイズを小さくする方法とか、訊きに来ます。
そのときは、またどうぞよろしく!

編集    削除