SLEEPスリープ関数

本ページには広告が含まれています。

目次

引数に指定した時間(秒)だけ処理を待機します。

構文
  1. void = SLEEP( 秒 )
引数
秒 (Single)必須
スリープする秒数(最小=0.001)
戻り値

使い方

引数に時間を秒単位で指定します。

以下は1秒待機する例。

UWSC
SLEEP(1)

分単位で指定する場合は分×60、時間単位で指定する場合は時間×3600というように秒単位に直します。

15分、3時間待機する場合は以下のようになります。

UWSC
SLEEP(15 * 60)     // 15分(=900秒)
SLEEP(3 * 3600)    // 3時間(=10800秒)

計算方法がわからないという方はSLEEP関数 (自作関数)を使ってください。

UWSC
SLEEP(convert(15, "mn", "sec"))   // 15分を秒単位に変換
SLEEP(convert(3, "hr", "sec"))    // 3時間を秒単位に変換

10分30秒のように複数の時間単位を含む場合は、秒単位に揃えてから加算します。

UWSC
SLEEP(10 * 60 + 30)
SLEEP(convert(10, "mn", "sec") + 30)

計算した結果を指定しても問題ありません。

UWSC
SLEEP(630)   // 10分30秒(=10*60+30)

カウントダウンタイマー

以下は残り待機時間を吹き出しで表示する関数です。SLEEP関数と同じように引数に待機する時間を秒単位で指定します。小数で指定した場合切り捨てられます。経過時間を計測するのではなく、まず終了日時を計算するので、誤差は1秒未満だと思われます。

UWSC
PROCEDURE countDownTimer(sec)
	DIM endTime = GETTIME() + INT(sec)
	REPEAT
		DIM t = endTime - GETTIME()
		FUKIDASI(t)
		SLEEP(0.001)
	UNTIL t <=  0
	FUKIDASI()
FEND

以下は3秒待機する例。

UWSC
countDownTimer(3)

カウントダウンタイマーを実行しながら処理を進めるにはスレッドを使います。

UWSC
THREAD countDownTimer(10)

ランダムな時間待機

RANDOM関数を使うことで待機時間に幅を持たせることができます。

ランダム値を取得する詳しい方法は、RANDOM関数を参考にしてください。

以下は5±2秒(3以上7未満)待機する例。

UWSC
SLEEP(3 + RANDOM(5)) // 7 - 3 + 1 = 5

プログラム実行例

画像をクリップボードにコピーする

Alt+Sでマウスカーソル下のオブジェクトのスクリーンショット画像をクリップボードにコピーします。

UWSC
SETHOTKEY(VK_S, MOD_ALT, "imageToClipboard")
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

WHILE TRUE
	SLEEP(0.01)
WEND

PROCEDURE imageToClipboard()
	SAVEIMG( , GETID(GET_FROMPOINT_WIN))
FEND
解説

コントロールパネルを起動する

UWSC
DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.ControlPanelItem("control")
SLEEP(3.000)

DIM ID = GETID("コントロール パネル")
//CTRLWIN(ID, CLOSE)
使用関数
解説

アイドル時間を取得

最後にキーボードまたはマウスを操作してから経過した時間をミリ秒で取得します。

UWSC
DEF_DLL GetTickCount(): Dword: kernel32
DEF_DLL GetLastInputInfo({DWORD, DWORD}): BOOL: user32
DIM t

SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

WHILE TRUE
	GetLastInputInfo(8, t)
	FUKIDASI((GetTickCount() - t) + "ms")
	SLEEP(0.01)
WEND

PowerPointを起動する(Excel)

UWSC
CONST xlMicrosoftPowerPoint = 2

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE

Excel.Application.ActivateMicrosoftApp(xlMicrosoftPowerPoint)

DIM ID = GETID("PowerPoint", "PPTFrameClass")
SLEEP(5.000)

CTRLWIN(ID, CLOSE)
Excel.Quit
使用関数
解説

Outlookを起動する(Excel)

UWSC
CONST xlMicrosoftMail = 3

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE

Excel.Application.ActivateMicrosoftApp(xlMicrosoftMail)

DIM ID = GETID("Outlook", "rctrl_renwnd32")
SLEEP(5.000)

CTRLWIN(ID, CLOSE)
Excel.Quit
使用関数
解説

マウスカーソル下のウィンドウの情報を吹き出しに表示

UWSC
PUBLIC ttl, cls

SETHOTKEY(VK_ESC, , "forceQuit")
SETHOTKEY(VK_S, MOD_ALT, "output")

WHILE TRUE
	ID = GETID(GET_FROMPOINT_WIN)
	msg = ""
	msg = msg + "ALT+Sでカーソル下のタイトルとクラス名を出力<#CR>"
	msg = msg + "ESCで終了<#CR>"
	msg = msg + "<#CR>"
	ttl = STATUS(ID, ST_TITLE)
	cls = STATUS(ID, ST_CLASS)
	msg = msg + "タイトル:" + ttl + "<#CR>"
	msg = msg + "クラス名:" + cls + "<#CR>"
	msg = msg + "X座標:" + STATUS(ID, ST_X) + "<#CR>"
	msg = msg + "Y座標:" + STATUS(ID, ST_Y) + "<#CR>"
	msg = msg + "幅:" + STATUS(ID, ST_WIDTH) + "<#CR>"
	msg = msg + "高さ:" + STATUS(ID, ST_HEIGHT) + "<#CR>"
	msg = msg + "クライアントX座標:" + STATUS(ID, ST_CLX) + "<#CR>"
	msg = msg + "クライアントY座標:" + STATUS(ID, ST_CLY) + "<#CR>"
	msg = msg + "クライアント幅:" + STATUS(ID, ST_CLWIDTH) + "<#CR>"
	msg = msg + "クライアント高さ:" + STATUS(ID, ST_CLHEIGHT) + "<#CR>"
	msg = msg + "親ウィンドウID:" + STATUS(ID, ST_PARENT) + "<#CR>"
	msg = msg + "アイコン状態:" + STATUS(ID, ST_ICON) + "<#CR>"
	msg = msg + "最大化:" + STATUS(ID, ST_MAXIMIZED) + "<#CR>"
	msg = msg + "表示状態:" + STATUS(ID, ST_VISIBLE) + "<#CR>"
	msg = msg + "アクティブ状態:" + STATUS(ID, ST_ACTIVE) + "<#CR>"
	msg = msg + "ビジー状態:" + STATUS(ID, ST_BUSY) + "<#CR>"
	msg = msg + "有効ID:" + STATUS(ID, ST_ISID) + "<#CR>"
	msg = msg + "64bit:" + STATUS(ID, ST_WIN64) + "<#CR>"
	msg = msg + "EXEパス:" + STATUS(ID, ST_PATH) + "<#CR>"
	msg = msg + "プロセスID:" + STATUS(ID, ST_PROCESS) + "<#CR>"
	msg = msg + "モニター番号:" + STATUS(ID, ST_MONITOR) + "<#CR>"
	FUKIDASI(msg)
	SLEEP(0.01)
WEND

// 強制終了する
PROCEDURE forceQuit()
	EXITEXIT
FEND

// カーソル下のウィンドウのタイトルとクラス名を出力
PROCEDURE output()
	PRINT "GETID(<#DBL>" + ttl + "<#DBL>, <#DBL>" + cls + "<#DBL>)"
	PRINT ttl
	PRINT cls
	PRINT "----------"
FEND
使用関数

処理を5秒間待機します

UWSC
SLEEP(5.000)
使用関数

メモ帳に本文を入力し[名前を付けて保存]ダイアログボックスを開いて保存する

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = "D:\Desktop\sample.txt"
DIM folderspec = FSO.GetParentFolderName(path)
DIM filename = FSO.GetFileName(path)

EXEC("notepad")
DIM ID = GETID("メモ帳", "Notepad")
SENDSTR(ID, "内容", 0)
CLKITEM(ID, "ファイル\名前を付けて保存", CLK_MENU)

IFB FSO.FolderExists(folderspec) THEN
	DIM ID2 = GETID("名前を付けて保存", "#32770")

	CTRLWIN(ID2, ACTIVATE)
	SLEEP(0.500)

	SCKEY(ID2, VK_F4)
	SENDSTR(ID2, folderspec, 1, TRUE)
	SCKEY(ID2, VK_RETURN)
	SLEEP(0.500)

	SCKEY(ID2, VK_ALT, VK_N)
	SENDSTR(ID2, filename, 1, TRUE)
	SLEEP(0.500)

	CLKITEM(ID, "保存", ITM_BTN)
ELSE
	PRINT "フォルダが存在しません。"
ENDIF
使用関数
解説

特定のキーを連打する

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
SETHOTKEY(VK_SPACE, EMPTYPARAM, "toggle")

PUBLIC flg = FALSE

WHILE TRUE
	DIM msg = "Spaceキーで切り替え<#CR>ESCキーで終了<#CR>"
	IFB flg THEN
		FUKIDASI(msg + "連打中")
		KBD(VK_A, CLICK)
		SLEEP(0.100)
	ELSE
		FUKIDASI(msg + "停止中")
	ENDIF
WEND

PROCEDURE forceQuit()
	EXITEXIT
FEND

PROCEDURE toggle()
	flg = !flg
	SLEEP(0.500)
FEND

Internet Explorerで開いたページを印刷

ExecWBの第1引数にOLECMDID_PRINTを指定すると、[ファイル]メニューの[印刷]を実行するのと同じ動作をします。

またExecWBの第2引数にOLECMDEXECOPT_DONTPROMPTUSERを指定しているので、ユーザーの入力を促すことなく印刷が始まります。このプログラムを実行する際は注意してください。

UWSC
CONST OLECMDID_PRINT = 6
CONST OLECMDEXECOPT_DONTPROMPTUSER = 2

DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("http://example.com")
BusyWait(IE)
SLEEP(3.000)

IE.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER)
IE.Quit
使用関数
解説

Internet Explorerで指定したURLを開きます

UWSC
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("http://example.com/")
BusyWait(IE)
SLEEP(3.000)
IE.Quit
使用関数

指定したURLを新しいタブで開く

UWSC
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("http://example.com/", $800)
tab = getIEObj("http://example.com/")
BusyWait(tab)
SLEEP(3.000)

tab.Quit
IE.Quit
使用関数

POSTデータを送信して指定したURLを開く

UWSC
HASHTBL data
// 送信するデータを「data[名前] = 値」の形式で指定
data["mail"] = "info@example.com"
data["address"] = "北海道"

DIM arr[LENGTH(data) - 1]
FOR n = 0 TO LENGTH(data) - 1
	// 連想配列の中身を「名前=値」の形式に変換
	arr[n] = arr[n] + data[n, HASH_KEY] + "=" + ENCODE(ENCODE(data[n, HASH_VAL], CODE_UTF8), CODE_URL)
NEXT
// 配列の中身を「&」で結合
DIM PostData = JOIN(arr, "&")

// データをエンコード
PostData = ENCODE(PostData, CODE_BYTEARRAY)
// PostDataを渡すときは必ず指定
DIM Headers = "Content-Type: application/x-www-form-urlencoded"
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("http://example.com", , , PostData, Headers)
BusyWait(IE)
SLEEP(5.000)
IE.Quit

テキストファイルを行毎に読み上げる

UWSC
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ)

FOR i = 1 TO FGET(FID, F_LINECOUNT)
	FUKIDASI(i)
	SPEAK(FGET(FID, i))
	SLEEP(1.000)
NEXT

FCLOSE(FID)

マウスの移動範囲を制限する

UWSC
DEF_DLL ClipCursor({long,long,long,long}): bool: user32

THREAD CursorPosition

ClipCursor(0, 0, 300, 300)
SLEEP(5.000)
ClipCursor(0, 0, G_SCREEN_W, G_SCREEN_H)

PROCEDURE CursorPosition()
	WHILE TRUE
		FUKIDASI(G_MOUSE_X + ", "+ G_MOUSE_Y)
		SLEEP(0.001)
	WEND
FEND
使用関数

現在のカーソル位置を吹き出しに表示

UWSC
DEF_DLL GetCursorPos({long, long}): bool: user32

SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

DIM x, y

WHILE TRUE
	GetCursorPos(x, y)
	FUKIDASI(x + ", " + y)
	SLEEP(0.001)
WEND

PROCEDURE forceQuit()
	EXITEXIT
FEND

GoBackとGoForwardを使った例

UWSC
DIM IE = IEBoot()
IE.Navigate("http://www.google.com")
BusyWait(IE)

IE.Navigate("https://www.yahoo.co.jp")
BusyWait(IE)

IE.GoBack
BusyWait(IE)
SLEEP(5.000)

IE.GoForward
BusyWait(IE)
SLEEP(5.000)

IE.Quit
使用関数
解説

プログラム実行時からの経過時間を表示(ESCで終了)

UWSC
SETHOTKEY(VK_ESC, , "forceQuit")

DIM t = GETTIME()

WHILE TRUE
	FUKIDASI(GETTIME() - t)
	SLEEP(0.001)
WEND

PROCEDURE forceQuit()
	EXITEXIT
FEND

メールの受信を検知(Outlook)

メールを受信したら日時を出力する。日時はメールの受信日時ではなくOutlookが受信を検知した日時。

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit") 

DIM Outlook = GETACTIVEOLEOBJ("Outlook.Application")
OLEEVENT(Outlook, "ApplicationEvents_11", "NewMailEx", "receivedMail")

WHILE TRUE
	FUKIDASI("ESCで終了")
	SLEEP(0.001)
WEND

PROCEDURE forceQuit()
	EXITEXIT
FEND

PROCEDURE receivedMail()
	PRINT text(now(), "yyyy/mm/dd hh:nn:ss")
FEND

ワークブックの数と名前を取得

UWSC
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE

FOR i = 1 TO 3
	Excel.Workbooks.Add()
NEXT

DIM Workbooks = Excel.Application.Workbooks

PRINT "ブック数:" + Excel.Workbooks.Count
PRINT "-----"

FOR Workbook IN Workbooks
	PRINT "ブック名:" + Workbook.Name
NEXT

SLEEP(3.00)

Excel.Application.Quit
結果
プレーンテキスト
ブック数:3
-----
ブック名:Book1
ブック名:Book2
ブック名:Book3
使用関数

Wordを起動する(Excel)

UWSC
CONST xlMicrosoftWord = 1

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE

Excel.Application.ActivateMicrosoftApp(xlMicrosoftWord)

DIM ID = GETID("Microsoft Word", "OpusApp")
SLEEP(5.000)

CTRLWIN(ID, CLOSE)
Excel.Quit
使用関数
解説

アクティブセルに文字列を入力する

UWSC
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Add()

DIM Range = Excel.Application.ActiveCell
SLEEP(1.000)
Range.Value = "abc"
SLEEP(3.000)

Excel.Application.DisplayAlerts = FALSE
Excel.Quit
使用関数

ファイルを開いているプロセスを調べる

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

WITH FSO
	DIM Folder = .GetSpecialFolder(TemporaryFolder)
	DIM folderspec = Folder.Path
	DIM filename = .GetTempName
	DIM path = .BuildPath(folderspec, filename)
ENDWITH

DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.FileRun()

DIM ID = GETID("ファイル名を指定して実行", "#32770")

SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path)
CLKITEM(ID, "OK", CLK_BTN)
SLEEP(0.500)

REPEAT
	SLEEP(0.100)
UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1

DIM FID = FOPEN(path, F_READ)

TRY
	DIM ID2 = GETID("使用中", "OperationStatusWindow")

	GETITEM(ID2, ITM_ACCTXT, 1)
	DIM str = ALL_ITEM_LIST[1]
	
	DIM sep = IIF(POS("フォルダー", STATUS(ID2, ST_TITLE)) <> 0, "\", "")
	DIM msg = "■" + str + "<#CR>"
	
	FOR r = 5 TO FGET(FID, F_LINECOUNT)
		IF POS("\" + str + sep,  FGET(FID, r, 3)) <> 0 THEN
			msg = msg + "ID:" + FGET(FID, r, 1) + ", プロセス名:" + FGET(FID, r, 2) + "<#CR>"
		ENDIF
	NEXT
	FCLOSE(FID)

	REPEAT
		FUKIDASI(TRIM(msg))
		SLEEP(0.100)
	UNTIL GETID("使用中", "OperationStatusWindow") = -1
FINALLY
	FSO.DeleteFile(path)
ENDTRY
使用関数
解説

電卓で計算をする

UWSC
DIM WshShell = CREATEOLEOBJ("Wscript.Shell")

WITH WshShell
	.Run("calc.exe")
	GETID("電卓", , -1)
	SLEEP(3.000)
	.AppActivate("電卓")
	.SendKeys("123")
	.SendKeys("{+}")
	.SendKeys("456")
	.SendKeys("{=}")
ENDWITH
使用関数
解説

音声認識でアプリを操作

UWSC
DIM cmd[] = "電卓", "メモ帳", "ペイント",  "最大化", "最小化", "終了"

RECOSTATE(TRUE, cmd)

WHILE TRUE
	FUKIDASI("音声を取得します")
	SELECT DICTATE(TRUE)
		CASE "電卓"
			FUKIDASI("電卓を起動します")
			EXEC("calc.exe")
		CASE "メモ帳"
			FUKIDASI("メモ帳を起動します")
			EXEC("notepad.exe")
		CASE "ペイント"
			FUKIDASI("ペイントを起動します")
			EXEC("mspaint.exe")
		CASE "最大化"
			FUKIDASI("アクティブウィンドウを最大化します")
			CTRLWIN(GETID(GET_ACTIVE_WIN), MAX)
		CASE "最小化"
			FUKIDASI("アクティブウィンドウを最小化します")
			CTRLWIN(GETID(GET_ACTIVE_WIN), MIN)
		CASE "終了"
			BREAK
	SELEND
	SLEEP(0.500)
	FUKIDASI()
WEND

RECOSTATE(FALSE)
使用関数
解説

キーボードからの入力を1文字ずつずらす

キーからのABBC、…、ZAのように1文字後ろにずらします。

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

PUBLIC array[-1]

FOR key = VK_A TO VK_Z
	arrayPush(array, key)
NEXT

PUBLIC rotate
rotate = arrayRotate(array, 1)

PUBLIC key

FOR key = VK_A TO VK_Z
	SETHOTKEY(key,, "keyChange")
	SETHOTKEY(key, MOD_SHIFT, "keyChange")
NEXT

WHILE TRUE
	FUKIDASI("キー割り当て変更中。ESCで終了")
	SLEEP(0.001)
WEND

PROCEDURE keyChange()
	DIM vk = rotate[arraySearch(HOTKEY_VK, array)]
	IFB HOTKEY_MOD = 4 THEN
		vk = STRCONV(vk, SC_UPPERCASE)
	ENDIF
	KBD(vk)
FEND
使用関数

今年何%経過したか

UWSC
WHILE TRUE
	DIM date = text(now(), "yyyy/mm/dd hh:nn:ss")
	DIM thisYear = VAL(getYear(date))
	DIM nextYear = thisYear + 1
	DIM total = dateDiff("s", thisYear + "/01/01", nextYear + "/01/01")
	DIM pass = dateDiff("s", thisYear + "/01/01", date)
	FUKIDASI(date + "<#TAB>" + pass/total * 100 + "%")
	SLEEP(0.001)
WEND
使用関数

マウス位置の色を取得

マウス位置の色情報を取得します。

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

WHILE TRUE
	DIM c = PEEKCOLOR(G_MOUSE_X, G_MOUSE_Y)
	DIM r = c AND $FF
	DIM g = (c AND $FF00) / $100
	DIM b = (c AND $FF0000) / $10000
	FUKIDASI("赤<#TAB>" + r + "<#CR>緑<#TAB>" + g + "<#CR>青<#TAB>" + b)
	SLEEP(0.001)
WEND
解説

Google Chromeで検索(WebDriver)

Google Chromeでhttps://google.comを開き、検索ボックスにUWSCと入力し、検索ボタンをクリックします。

UWSC
DIM WebDriver = CREATEOLEOBJ("Selenium.WebDriver")
WebDriver.Start("chrome")
WebDriver.Get("https://google.com")

WebElement = WebDriver.FindElementByXPath("//textarea[@name='q']")
WebElement.SendKeys("UWSC")

WebElement = WebDriver.FindElementByXPath("//input[@value='Google 検索']")
WebElement.Submit()
SLEEP(3.000)

WebDriver.Quit
使用関数
解説

キャレット(カーソル)位置を取得

UWSC
DEF_DLL GetCaretPos({long, long}): bool: user32

SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

DIM x, y

WHILE TRUE
	GetCaretPos(x, y)
	FUKIDASI(x + ", " + y)
	SLEEP(0.010)
WEND

最前面にあるウィンドウのタイトルを吹き出しに表示

UWSC
DEF_DLL GetForegroundWindow(): long: user32.dll

WHILE TRUE
	FUKIDASI(STATUS(HNDTOID(GetForegroundWindow()), ST_TITLE))
	SLEEP(0.001)
WEND

ウィンドウのタイトルバーを点滅させる

UWSC
DEF_DLL FlashWindow(hwnd, long): long: user32.dll

DIM hwnd = IDTOHND(EXEC("notepad"))

FOR i = 1 TO 3
	PRINT FlashWindow(hwnd , TRUE)
	SLEEP(3.000)
NEXT

CLKITEMで操作できる項目を取得

UWSC
PUBLIC flg = FALSE

SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
SETHOTKEY(VK_X, MOD_ALT, "flag")

DIM array[] = "BTN", "LIST", "TAB", "MENU", "TREEVIEW", + _
				"LISTVIEW", "EDIT", "STATIC", "STATUSBAR", "TOOLBAR", + _
				"LINK", "ACCCLK", "ACCCLK2", "ACCTXT", "ACCEDIT", + _
				"FROMLAST", "BACK"

REPEAT
	FUKIDASI("Alt + Xでカーソル下の情報を取得")
	SLEEP(0.001)
UNTIL flg

FUKIDASI("取得中")

DIM ID = GETID(GET_FROMPOINT_WIN)

PRINT "DIM ID = GETID(<#DBL>" + STATUS(ID, ST_TITLE) + "<#DBL>, <#DBL>" + STATUS(ID, ST_CLASS) + "<#DBL>)"
PRINT

FOR item IN array
	PRINT "// [" + item + "]" 
	FOR class IN GETITEM(ID, EVAL("ITM_" + item), -1)
		PRINT "CLKITEM(ID, <#DBL>" + class + "<#DBL>, CLK_" + item + ")"
	NEXT
	PRINT
NEXT

PROCEDURE forceQuit()
	EXITEXIT
FEND

PROCEDURE flag()
	flg = TRUE
FEND
解説