2重起動制御

【ご質問】
独立型アプレットが起動している状態で、同じアプレットを起動しようとした場合に、
そのアプレットが起動済みであるかの判定を行うことは出来ますか。

【回答】
独立型アプレットに以下のようなコードを追加することで、実現可能です。

{let invoke-count:int = 0}

{do
  set {get-the-applet}.launch-handler =
          {proc {url:Url}:void
              {inc invoke-count}
              {if invoke-count > 1 then
                  {popup-message “すでに起動しています。”}
              }
          }
}

プロセスのインスタンスは1つであるため、グローバル変数の初期化は1回だけ行われます。
しかし、アプレットのlaunch-handlerは起動ごとに呼ばれるため、
この中でグローバル変数のチェックを行うことで、起動済みかどうかの判断をしています。