GETITEM

キャプション文字やリスト等をすべて取得します。

構文
  1. Integer = GETITEM( ID, 種別, [番号, リストビュー列, ディセーブルフラグ, 最大取得数] )
引数
ID
Windowを識別するID
種別
(複数指定可)
ITM_BTN
ボタン、チェックボックス、ラジオボタン
ITM_LIST
リストボックス、コンボボックス
ITM_TAB
タブコントロール
ITM_MENU
メニュー
ITM_TREEVIEW
ツリービュー(ITM_TREEVEW でも可)
ITM_LISTVIEW
リストビュー(ITM_LSTVEW でも可)
ITM_EDIT
エディトボックス
ITM_STATIC
スタティク
ITM_STATUSBAR
ステータスバー
ITM_TOOLBAR
ツールバー
ITM_LINK
リンク文字
ITM_ACCCLK
アクセシビリティ経由:クリック可能な物
ITM_ACCCLK2
アクセシビリティ経由:クリック可能な物(選択可のテキストも含める)
ITM_ACCTXT
アクセシビリティ経由:スタティク文字
ITM_ACCEDIT
アクセシビリティ経由:エディト内文字
ITM_FROMLAST
アクセシビリティ経由(ITM_ACC*)指定時に後ろからサーチする
ITM_BACK
アクセシビリティ経由(ITM_ACC*)指定時にアクティブにしない
番号
ITM_LIST、ITM_TREEVIEW、ITM_LISTVIEW 複数存在時は左上からの順番を指定(-1にて全コントロール取得)
リストビュー列
リストビュー指定時のリストビューの列を指定(-1にてカラム名取得)
ディセーブル
FALSE
ディセーブルな物も取得(デフォルト)
TRUE
ディセーブルな物はを取得しない
最大取得数
アクセシビリティ経由(ITM_ACC*)指定時に取得する数を制限する
戻り値

取得した数を返す(For In 構文にて指定された場合は各要素を返す)

取得した情報は配列変数のALL_ITEM_LIST[ ]に格納される(配列はゼロから)

プログラム実行例

メモ帳のメニューを取得・出力

DIM ID = EXEC("notepad")

FOR item IN GETITEM(ID, ITM_MENU)
	PRINT item
NEXT

CTRLWIN(ID, CLOSE)
    (1) (3) (7)
結果
ファイル\新規
ファイル\新しいウィンドウ
ファイル\開く
ファイル\上書き保存
ファイル\名前を付けて保存
ファイル\ページ設定
ファイル\印刷
ファイル\メモ帳の終了
編集\元に戻す
編集\切り取り
編集\コピー
編集\貼り付け
編集\削除
編集\Bing で検索
編集\検索
編集\次を検索
編集\前を検索
編集\置換
編集\行へ移動
編集\すべて選択
編集\日付と時刻
書式\右端で折り返す
書式\フォント
表示\ズーム\拡大
表示\ズーム\縮小
表示\ズーム\既定の倍率に戻す
表示\ステータス バー
ヘルプ\ヘルプの表示
ヘルプ\フィードバックの送信
ヘルプ\バージョン情報
解説
  1. 1行目
    DIM ID = EXEC("notepad")
    メモ帳を起動し、IDを取得。
  2. 3-5行目
    FOR item IN GETITEM(ID, ITM_MENU)
    	PRINT item
    NEXT
    メニューを配列で取得し、出力。
  3. 7行目
    CTRLWIN(ID, CLOSE)
    ID のウィンドウを閉じます。

電卓を操作し計算した結果を取得

EXEC("calc")
DIM ID = GETID("電卓")

DIM array[] = "1", "5", "小数点", "4", "プラス", "3", "等号"

FOR item IN array
	CLKITEM(ID, item, ITM_BTN)
NEXT

FOR item IN GETITEM(ID, ITM_STATIC)
	IFB POS("表示は ", item) AND POS(" です", item) THEN
		PRINT VAL(REPLACE(REPLACE(item,"表示は ", ""), " です", ""))
	ENDIF
NEXT

CTRLWIN(ID, CLOSE)
    (1) (2) (7) (10) (11) (12) (12) (16)
結果
18.4
解説
  1. 1行目
    EXEC("calc")
    電卓を起動する。
  2. 2行目
    DIM ID = GETID("電卓")
    タイトルが「電卓」のウィンドウのIDを取得し ID に代入します。
  3. 4行目
    DIM array[] = "1", "5", "小数点", "4", "プラス", "3", "等号"
    入力するアイテム名の配列。
  4. 6-8行目
    FOR item IN array
    	CLKITEM(ID, item, ITM_BTN)
    NEXT
    配列に格納されているアイテムを順に実行。
  5. 10-14行目
    FOR item IN GETITEM(ID, ITM_STATIC)
    	IFB POS("表示は ", item) AND POS(" です", item) THEN
    		PRINT VAL(REPLACE(REPLACE(item,"表示は ", ""), " です", ""))
    	ENDIF
    NEXT
    計算結果はGETITEM関数で取得すると「表示は 〇〇 です」の形式なので、「表示は 」と「 です」が含まれるアイテムを取得し、余計な文字列を削除。
  6. 16行目
    CTRLWIN(ID, CLOSE)
    ID のウィンドウを閉じます。

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
    (3,4) (12,16) (13) (18) (20) (25) (25) (26)
解説
  1. 1行目
    PUBLIC flg = FALSE
    Alt+Xの入力を検知するための変数。
  2. 3行目
    SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
    ESCキーが入力されたらforceQuit関数を呼び出す。
  3. 4行目
    SETHOTKEY(VK_X, MOD_ALT, "flag")
    Alt+Xが入力されたらflag関数を呼び出し、変数flgにTrueを代入。
  4. 11-14行目
    REPEAT
    	FUKIDASI("Alt + Xでカーソル下の情報を取得")
    	SLEEP(0.001)
    UNTIL flg
    変数flgにTrueが代入されるまで待機する。
  5. 18行目
    DIM ID = GETID(GET_FROMPOINT_WIN)
    マウスカーソル下のウィンドウのIDを取得する。
  6. 20行目
    PRINT "DIM ID = GETID(<#DBL>" + STATUS(ID, ST_TITLE) + "<#DBL>, <#DBL>" + STATUS(ID, ST_CLASS) + "<#DBL>)"
    マウスカーソル下のウィンドウのタイトルとクラス名を出力。
  7. 23,29行目
    FOR item IN array
    	…
    NEXT
    配列arrayの要素数だけループ。
  8. 25-27行目
    	FOR class IN GETITEM(ID, EVAL("ITM_" + item), -1)
    		PRINT "CLKITEM(ID, <#DBL>" + class + "<#DBL>, CLK_" + item + ")"
    	NEXT
    第二引数に指定した項目のキャプションやリスト等を取得する。For In構文に指定した場合は各要素が返されます。

関連記事

CLKITEM (スクリプト関数)
アイテムをクリックします。
CHKBTN (スクリプト関数)
ボタン類の状態を返します。
SLCTBOX (スクリプト関数)
セレクトボックスを表示します。
GETCTLHND (スクリプト関数)
ボタン等、オブジェクトのハンドルを取得します。
GETSTR (スクリプト関数)
文字列を取得します。
ACW (スクリプト関数)
ウィンドウの状態を変更、またはアクティブにします。
CTRLWIN (スクリプト関数)
ウィンドウの状態を制御します。
GETALLWIN (スクリプト関数)
全ウィンドウのIDを取得します。
GETID (スクリプト関数)
指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。
GETSLIDER (スクリプト関数)
スライダー(トラックバー、スクロールバー)の値を取得します。
HNDTOID (スクリプト関数)
ハンドル値 をIDをに変換します。
IDTOHND (スクリプト関数)
IDを ハンドル値 に変換します。
MOUSEORG (スクリプト関数)
マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送ります。
SCKEY (スクリプト関数)
ショートカットキーを実行します。
SENDSTR (スクリプト関数)
文字列を送信します。
SETSLIDER (スクリプト関数)
スライダー(トラックバー、スクロールバー)の値を設定します。
STATUS (スクリプト関数)
ウィンドウの各種状態を返します。
GETSLCTLST (スクリプト関数)
COMBOBOX, LISTBOX, ITM_LISTVIEW, ITM_TREEVIEW での選択項目を取得します。