※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

多重起動させない

<このスクリプトの掲載日:200800503>

概要
多重起動した場合、後から実行したスクリプトを終了する、または先に実行しているスクリプトを終了させる。

UWSCの仕様(?)では、GETIDで自身のタスク名を指定してIDを取得しようとすると多重起動ではない場合は戻値が-1(NG)となり、多重起動した場合の戻値は1以上となる(先に実行しているスクリプトのIDが取得される)ため、それを利用することで簡単に多重起動を回避することが可能です。
スクリプトの最初の方に記述(STOPFORMやOPTIONの直後に記述)するのがベストです。


多重起動時、後から実行したスクリプトを終了する例
STOPFORM(FALSE)
ID=GETID("UWSC - "+GET_UWSC_NAME, "TApplication", 0.2)
IFB ID>0 THEN
    MSGBOX("多重起動です。スクリプトを終了します。")
    EXIT
ENDIF

GETKEYSTATE(VK_ESC)
WHILE !GETKEYSTATE(VK_ESC)
   SLEEP(0.1)
WEND

多重起動時、先に実行されているスクリプトを終了させる例
STOPFORM(FALSE)
ID=GETID("UWSC - "+GET_UWSC_NAME, "TApplication", 0.2)
IFB ID>0 THEN
    CTRLWIN(ID, CLOSE)
    MSGBOX("多重起動です。先に実行していた同スクリプトを終了させました。")
ENDIF
GETKEYSTATE(VK_ESC)
WHILE !GETKEYSTATE(VK_ESC)
	SLEEP(0.1)
WEND
※基本的な違いは EXIT が CTRLWIN(ID, CLOSE) に変わっただけです。