本ページには広告が含まれています。
目次 [非表示]
ウィンドウの各種状態を返します。
- 構文
- return = STATUS( ID, 取得項目 )
- 引数
- ID (Integer)必須
- Windowを識別するID
- 取得項目 (#status)必須
- 以下の定数
- ST_TITLE
- タイトルを返す(型:UNICODE文字列)
- ST_CLASS
- クラス名を返す(型:UNICODE文字列)
- ST_X
- X座標を返す(型:4バイト整数(符号付))
- ST_Y
- Y座標を返す(型:4バイト整数(符号付))
- ST_WIDTH
- 幅を返す(型:4バイト整数(符号付))
- ST_HEIGHT
- 高さを返す(型:4バイト整数(符号付))
- ST_CLX
- クライアント領域のX座標を返す(型:4バイト整数(符号付))
- ST_CLY
- クライアント領域のY座標を返す(型:4バイト整数(符号付))
- ST_CLWIDTH
- クライアント領域の幅を返す(型:4バイト整数(符号付))
- ST_CLHEIGHT
- クライアント領域の高さを返す(型:4バイト整数(符号付))
- ST_PARENT
- 親ウィンドウのIDを返す、親が無ければ-1(型:4バイト整数(符号付))
- ST_ICON
- アイコン状態であればTrue、でなければFalse(型:ブール型)
- ST_MAXIMIZED
- 最大化状態であればTrue、でなければFalse(型:ブール型)
- ST_VISIBLE
- 通常の表示状態であればTrue、でなければFalse(型:ブール型)
- ST_ACTIVE
- アクティブ状態であればTrue、でなければFalse(型:ブール型)
- ST_BUSY
- ビジー状態であればTrue、でなければFalse(型:ブール型)
- ST_ISID
- 有効なIDであればTrue、でなければFalse(型:ブール型)
- ST_WIN64
- 64bitアプリであればTrue、でなければFalse(型:ブール型)
- ST_PATH
- EXEのパスを返す(型:UNICODE文字列)
- ST_PROCESS
- プロセスIDを返す(型:4バイト整数(符号なし))
- ST_MONITOR
- 表示されているモニタ番号を返す(型:4バイト整数(符号付))
- 戻り値
- 取得した値
取得項目
ウィンドウの座標・幅

- ST_TITLE
- タイトルバーに表示されるタイトルを返します。
- ST_CLASS
- アプリケーション作成者がアプリケーションに付与する内部的な名前であるクラス名を返します。
- ST_X
- ウィンドウのX座標を返します。返す値はウィンドウ左上を基準としたX座標となります。
- ST_Y
- ウィンドウのY座標を返します。返す値はウィンドウ左上を基準としたY座標となります。
- ST_WIDTH
- ウィンドウの幅を返します。
- ST_HEIGHT
- ウィンドウの高さを返します。
- ST_CLX
- クライアント領域のX座標を返します。返す値はクライアント領域左上を基準としたX座標となります。
- ST_CLY
- クライアント領域のY座標を返します。返す値はクライアント領域左上を基準としたY座標となります。
- ST_CLWIDTH
- クライアント領域の幅を返します。
- ST_CLHEIGHT
- クライアント領域の高さを返します。
座標とサイズを組み合わせることでウィンドウの左上・右上・左下・右下の座標を計算で求めることができます。
DIM ID = GETID(GET_FROMPOINT_WIN) DIM x DIM y // 左上 x = STATUS(ID, ST_X) y = STATUS(ID, ST_Y) // 右上 x = STATUS(ID, ST_X) + STATUS(ID, ST_WIDTH) y = STATUS(ID, ST_Y) // 左下 x = STATUS(ID, ST_X) y = STATUS(ID, ST_Y) + STATUS(ID, ST_HEIGHT) // 右下 x = STATUS(ID, ST_X) + STATUS(ID, ST_WIDTH) y = STATUS(ID, ST_Y) + STATUS(ID, ST_HEIGHT)
親ウィンドウ・子ウィンドウ

- ST_PARENT
- 親ウィンドウのIDを返します。ウィンドウからウィンドウを開いたとき新しく開いた方のウィンドウを子ウィンドウ、元のウィンドウを親ウィンドウといいます。画像のOptionのウィンドウから見たUWSC Debuggerが親ウィンドウとなります。
状態
- ST_ICON
- アイコン状態を示すブール値を返します。
- ST_MAXIMIZED
- 最大化状態を示すブール値を返します。
- ST_VISIBLE
- 可視状態を示すブール値を返します。可視状態であれば最小化しててもTrueを返します。
- ST_ACTIVE
- アクティブ状態を示すブール値を返します。アクティブ状態とは利用者が文字入力などの操作を行える状態にある、最前面に表示されているウィンドウのことをいいます。
- ST_BUSY
- ビジー状態を示すブール値を返します。ビジー状態とは負荷のかかる処理を行っていてユーザーの操作に対応できない状態のことを指します。マウスカーソルの種別が待ち状態(青い輪でくるくるしてる状態)がビジー状態です。
ウィンドウのID
- ST_ISID
- UWSCで利用できるIDであるかを示すブール値を返します。
有効なIDは以下のプログラムで取得できます。以下の結果に出てくるIDはTrue、出てこない値はFalseを返します。
FOR ID IN GETALLWIN() PRINT ID NEXT
64bitアプリ

- ST_WIN64
- 64bitアプリかを示すブール値を返します。64bitアプリかはタスクマネージャーのプロセスで確認することができます。アプリ名の後ろに(32ビット)と書かれているものは32bitアプリ、書かれていないものは64bitアプリとなります。
実行ファイルの場所

- ST_PATH
- アプリケーションの実行ファイルの場所(パス)を返します。実行ファイルの場所は、タスクマネージャーのアプリ名を右クリックメニューの[ファイルの場所を開く]で開いたときに選択されているアプリのパスと同じです。
プロセスID

- ST_PROCESS
- プロセスIDを返します。この値はタスクマネージャー詳細タブのPIDの値に等しいです。
モニタ番号
- ST_MONITOR
- 表示されているモニタ番号を返します。
プログラム実行例
表示されているすべてのウィンドウのスクリーンショットを保存
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") DIM folderspec = "D:\Desktop\Screenshot" IF FSO.FolderExists(folderspec) = FALSE THEN FSO.CreateFolder(folderspec) FOR n = 0 TO GETALLWIN() - 1 DIM ID = ALL_WIN_ID[n] IFB STATUS(ID, ST_VISIBLE) = TRUE DIM filename = ID + "_" + STATUS(ID, ST_TITLE) filename = PathCleanupSpec(filename) DIM path = FSO.BuildPath(folderspec, filename) path = uniqueFilename(path) SAVEIMG(path, id) ENDIF NEXT ////////////////////////////////////////////////// // 【引数】 // filename : 使えない文字を削除するファイル・フォルダ名 // 【戻り値】 // ファイル名として使えない文字を削除した文字列 ////////////////////////////////////////////////// FUNCTION PathCleanupSpec(filename) DIM filenameErrChar[12] = "\", "/", ":", "*", "?", "<#DBL>", "<#CR>", "<#TAB>", "<", ">", "|", "[", "]" FOR item IN filenameErrChar filename = REPLACE(filename, item, "") NEXT RESULT = filename FEND ////////////////////////////////////////////////// // 【引数】 // path : ファイルのパス // 【戻り値】 // 重複しないファイル名 ////////////////////////////////////////////////// FUNCTION uniqueFilename(path) DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.FileExists(path) THEN DIM fol = FSO.GetParentFolderName(path) DIM filename = FSO.GetBaseName(path) DIM extension = FSO.GetExtensionName(path) DIM i = 2 WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension)) i = i + 1 WEND RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension) ELSE RESULT = path ENDIF FEND
使用関数
解説
タスクバーの位置を取得する
DIM ID = GETID("", "Shell_TrayWnd") SELECT TRUE CASE STATUS(ID, ST_X) = 0 AND STATUS(ID, ST_Y) = 0 AND STATUS(ID, ST_CLWIDTH) = G_SCREEN_W PRINT "上" CASE STATUS(ID, ST_X) = 0 AND STATUS(ID, ST_Y) = 0 AND STATUS(ID, ST_CLHEIGHT) = G_SCREEN_H PRINT "左" CASE STATUS(ID, ST_X) = 0 AND STATUS(ID, ST_Y) <> 0 AND STATUS(ID, ST_CLWIDTH) = G_SCREEN_W PRINT "下" CASE STATUS(ID, ST_X) <> 0 AND STATUS(ID, ST_Y) = 0 AND STATUS(ID, ST_CLHEIGHT) = G_SCREEN_H PRINT "右" SELEND
使用関数
解説
マウスカーソル下のウィンドウの情報を吹き出しに表示
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
使用関数
マウスカーソル下の文字情報を取得
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit") WHILE TRUE DIM ID = GETID(GET_FROMPOINT_WIN) FUKIDASI(POSACC(ID, G_MOUSE_X - STATUS(ID, ST_CLX), G_MOUSE_Y - STATUS(ID, ST_CLY), ACC_BACK)) SLEEP(0.001) WEND ////////////////////////////////////////////////// // 【引数】 // // 【戻り値】 // ////////////////////////////////////////////////// PROCEDURE forceQuit() EXITEXIT FEND
使用関数
ファイルを開いているプロセスを調べる
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 ////////////////////////////////////////////////// // 【引数】 // // 【戻り値】 // ////////////////////////////////////////////////// PROCEDURE forceQuit() EXITEXIT FEND ////////////////////////////////////////////////// // 【引数】 // expr : 評価する式 // truepart : 評価した式がTrueのときに返す値 // falsepart : 評価した式がFalseのときに返す値 // 【戻り値】 // truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき ////////////////////////////////////////////////// FUNCTION IIF(expr, truepart, falsepart) IFB EVAL(expr) THEN RESULT = truepart ELSE RESULT = falsepart ENDIF FEND
使用関数
解説
アクティブウィンドウの左上にカーソルを移動
DIM ID = GETID(GET_ACTIVE_WIN) DIM x = STATUS(ID, ST_X) DIM y = STATUS(ID, ST_Y) MMV(x, y)
使用関数
解説
最前面にあるウィンドウのタイトルを吹き出しに表示
DEF_DLL GetForegroundWindow(): long: user32.dll WHILE TRUE FUKIDASI(STATUS(HNDTOID(GetForegroundWindow()), ST_TITLE)) SLEEP(0.001) WEND
使用関数
カーソル位置の文章を取得
DIM arr[-1] FOR n = 0 TO GETALLWIN() - 1 arrayPush(arr, ALL_WIN_ID[n]) NEXT arrayFilter(arr, "STATUS(%val%, ST_CLASS) = <#DBL>OpusApp<#DBL> AND STATUS(%val%, ST_VISIBLE)") arrayMap("REPLACE(STATUS(%val%, ST_TITLE), <#DBL> - Microsoft Word<#DBL>, <#DBL><#DBL>)", arr) QSORT(arr, QSRT_A) TRY DIM Word = GETACTIVEOLEOBJ("Word.Application") EXCEPT MSGBOX("操作する文書を開いてださい。") EXIT ENDTRY DIM res = SLCTBOX(SLCT_RDO OR SLCT_STR, 0, "操作する文書を選択", arr) IFB res = -1 THEN MSGBOX("ファイル名が選択されなかったので終了します。") EXIT ENDIF PRINT Word.Selection.Sentences(1).Text ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列。参照引数。 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻り値】 // callback関数によりフィルタ処理が行われたarrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // values : 追加する要素をvalue1から指定 // 【戻り値】 // 処理後の配列の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY) DIM i = 1 WHILE EVAL("value" + i) <> EMPTY DIM res = RESIZE(array, UBound(array) + 1) array[res] = EVAL("value" + i) i = i + 1 WEND RESULT = LENGTH(array) FEND ////////////////////////////////////////////////// // 【引数】 // inputs : 繰り返す文字列 // multiplier : inputsを繰り返す回数 // 【戻り値】 // inputsをmultiplier回を繰り返した文字列を返します ////////////////////////////////////////////////// FUNCTION strRepeat(inputs, multiplier) DIM res = "" FOR n = 1 TO multiplier res = res + inputs NEXT RESULT = res FEND ////////////////////////////////////////////////// // 【引数】 // arrayname : 上限値を求める配列の名前 // dimension : 返す次元を示す整数 // 【戻り値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(arrayname[], dimension = 1) RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")") FEND
使用関数
CLKITEMで操作できる項目を取得
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
使用関数
解説
関連記事
- ACW関数 (スクリプト関数)
- 指定したIDのウィンドウの位置・サイズを変更します。IDのみを指定した場合、そのウィンドウをアクティブにします。
- MONITOR関数 (スクリプト関数)
- MONITOR関数は、指定したモニタ番号・取得項目の情報を取得します。取得項目には、X座標・Y座標・幅・高さ・モニター名があります。引数なしの場合はモニターの数を返します。
- EXEC関数 (スクリプト関数)
- EXECは、第一引数に指定したアプリを起動する関数です。そのウィンドウのIDを戻値として返します。ストアアプリ・エクスプローラなどの別プロセスを呼ぶアプリはIDを返さないことがあるので、起動した後にGETIDで取得します。
- GETID関数 (スクリプト関数)
- 指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。UWSCでウィンドウを操作するのによく使う関数です。
- PEEKCOLOR関数 (スクリプト関数)
- PEEKCOLOR関数は、指定座標の色を取得する関数です。
- MOUSEORG関数 (スクリプト関数)
- マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送ります。
- getBitmap関数 (自作関数)
- 引数に指定したビットマップ画像のサイズ・幅・高さ・ビットの深さを配列で返します。
- GETCTLHND関数 (スクリプト関数)
- ボタン等、オブジェクトのハンドルを取得します。
- CHKIMG関数 (スクリプト関数)
- 指定画像が画面上にあるかチェックしあればその情報を返します。
- CTRLWIN関数 (スクリプト関数)
- ウィンドウの状態を操作します。ウィンドウを終了、アクティブ化、表示・非表示、最大化・最小化などができます。