-
Notifications
You must be signed in to change notification settings - Fork 5
ウィンドウ操作関数
- GETID
- IDTOHND
- HNDTOID
- GETALLWIN
- GETCTLHND
- CLKITEM
- CTRLWINCTRLWIN
- STATUS
- MONITOR
- CHKIMG
- ウィンドウ関数低レベル
- ACCについて
実装バージョン: 0.0.4
指定ウィンドウのIDを返します
戻り値 = getid(タイトル[, クラス名, 待ち時間, MDI子タイトル])
- タイトル
ウィンドウタイトル (部分一致) - クラス名 (省略可)
ウィンドウクラス名 (部分一致) - 待ち時間 (省略可)
ウィンドウが見つからない場合のタイムアウト時間
省略時は1
秒 - MDI子タイトル (省略可)
未実装
MDIウィンドウ内の子ウィンドウのタイトル - 戻り値
ウィンドウのID (1以上の数値)
見つからなかった場合は-1
戻り値 = getid(定数)
- 定数
以下の定数を指定できます
該当するウィンドウのIDを返します
定数 | 対象ウィンドウ |
---|---|
GET_ACTIVE_WIN | アクティブウィンドウ |
GET_FROMPOINT_WIN | マウスカーソル下のウィンドウ |
GET_FROMPOINT_OBJ | マウスカーソル下の子ウィンドウ |
GET_THISUWSC_WIN | 対象なし(-1を返す) |
GET_LOGPRINT_WIN | Printウィンドウ |
GET_BALLOON_WIN | 吹き出し |
GET_FUKIDASI_WIN | 吹き出し |
GET_FORM_WIN | 対象なし(-1を返す) |
GET_FORM_WIN2 | 対象なし(-1を返す) |
GET_SCHEDULE_WIN | 対象なし(-1を返す) |
GET_STOPFORM_WIN | 対象なし(-1を返す) |
ウィンドウIDからウィンドウハンドルを得ます
ハンドル = idtohnd(ID)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
ID | 数値 | 必須 | ウィンドウID |
ハンドル | 数値 | 戻り値 | ウィンドウハンドル |
ウィンドウハンドルからウィンドウIDを得ます
ID = hndtoid(ハンドル)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
ハンドル | 数値 | 必須 | ウィンドウハンドル |
ID | 数値 | 戻り値 | ウィンドウID |
0.9.0
以上
すべてのウィンドウのIDを得ます
IDを指定した場合はそのウィンドウの子ウィンドウをすべて取得します
IDリスト = getallwin(ID=EMPTY)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
ID | 数値 | 省略可 | 子ウィンドウを取得する場合はウィンドウIDを指定 |
IDリスト | 配列 | 戻り値 | 取得したウィンドウIDの配列 |
- 戻り値が個数からIDの配列になった
-
ALL_WIN_ID
は廃止
-
- 取得されるウィンドウ情報が増えた
0.9.0
以上
ボタン等、子ウィンドウのハンドルを得る
ハンドル = getctlhnd(ID, アイテム名, 番号=1)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
ID | 数値 | 必須 | ウィンドウID |
アイテム名 | 文字列 | 必須 | 子ウィンドウのタイトルまたはクラス名 (部分一致) |
定数 | 必須 |
GET_MENU_HND : メニューハンドルを返す |
|
GET_SYSMENU_HND : システムメニューハンドルを返す |
|||
番号 | 数値 | 省略可 | アイテム名に該当するものが複数あった場合に指定 |
ハンドル | 数値 | 戻り値 | ウィンドウまたはメニューのハンドル |
id = getid("ファイル名を指定して実行")
h1 = getctlhnd(id, "実行するプログラム名、") // タイトルを部分一致
h2 = getctlhnd(id, "static", 2) // クラス名指定、2番目
assert_equal(h1, h2) // 一致
0.9.0
以上
ボタン等をクリックします
成否 = clkitem(ID, アイテム名, 種別=0, チェック=TRUE, 番号=1)
HWND = clkitem(ID, アイテム名, 種別=0, チェック=TRUE, 番号=1)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
ID | 数値 | 必須 | ウィンドウID |
アイテム名 | 文字列 | 必須 | ボタン名や項目名、タブ文字(<#TAB> )区切りでリストの複数選択 |
配列 | 必須 | タブ文字区切りの代わりに配列指定も可能 | |
種別 | 定数 | 省略可 | クリック対象やクリック方法を指定 (OR連結で複数指定可) |
アイテム種類が未指定の場合すべてのアイテム種類を対象とする | |||
APIが未指定の場合すべてのAPIでのクリックを対象とする | |||
チェック | 真偽値 | 省略可 | チェックボックスのチェックを入れる(TRUE)または外す(FALSE) |
ボタンを押す(TRUE)または押さない(FALSE) | |||
数値 |
2 を指定すると三状態チェックボックスを灰色状態にする (CLK_APIのみ) |
||
番号 | 数値 | 省略可 | 同盟アイテムが複数ある場合に順番を指定 (1から) |
リストの複数選択の際は無視されます | |||
成否 | 真偽値 | 戻り値 | クリックに成功した場合TRUE、チェックがFALSEの場合対象が存在していればTRUE |
HWND | 数値 | 戻り値 | 種別にCLK_HWND を指定した場合に見つかったアイテムのHWNDを返す (見つからない場合は0) |
定数 | 種別 | 意味 | 別名 |
---|---|---|---|
CLK_BTN | アイテム種類 | ボタン、チェックボックス、ラジオボタン、その他以下に該当しないもの | |
CLK_LIST | アイテム種類 | リストボックス、コンボボックス | |
CLK_TAB | アイテム種類 | タブ | |
CLK_MENU | アイテム種類 | メニュー | |
CLK_TREEVIEW | アイテム種類 | ツリービュー | CLK_TREEVEW |
CLK_LISTVIEW | アイテム種類 | リストビュー、カラムヘッダ | CLK_LSTVEW |
CLK_TOOLBAR | アイテム種類 | ツールバー | |
CLK_LINK | アイテム種類 | リンク | |
CLK_BACK | 動作オプション | バックグラウンド実行 (ウィンドウをアクティブにしない) | |
CLK_MOUSEMOVE | 動作オプション | クリック位置にマウスを移動 | CLK_MUSMOVE |
CLK_RIGHTCLK | マウスクリック | 右クリック | |
CLK_LEFTCLK | マウスクリック | 左クリック (CLK_RIGHTCLKと同時指定ならこちらが優先) | |
CLK_DBLCLK | マウスクリック | ダブルクリック (CLK_LEFTCLKと同時指定で2回目のクリック) | |
CLK_SHORT | 検索オプション | アイテム名の部分一致 | |
CLK_FROMLAST | 検索オプション | 逆順サーチ (CLK_ACC指定時のみ有効) | |
CLK_API | API | Win32 APIによる検索およびクリック | |
CLK_ACC | API | アクセシビリティコントロールによる検索およびクリック | |
CLK_UIA | API | UI Automationによる検索およびクリック | |
CLK_HWND | 戻り値オプション | 戻り値を対象アイテムのHWNDにする (0は対象不明) |
アイテム種別が複数指定された場合は以下の順序でアイテム検索を行います
(該当アイテムが見つかるまで)
- CLK_BTN
- CLK_LIST
- CLK_TAB
- CLK_MENU
- CLK_TREEVIEW
- CLK_LISTVIEW
- CLK_TOOLBAR
- CLK_LINK
APIが複数指定された場合以下の順序でクリックを実行します
(クリックが成功するまで)
- CLK_API
- CLK_UIA
- CLK_ACC
CLK_SHORT
が指定されていない場合アイテム名は完全一致する必要がありますが、ニーモニックがある場合は一致条件が増えます
-
&Button
-
&Button
:&
込みで完全一致 -
Button
:&
なしでも一致扱い
-
-
ボタン(&B)
-
ボタン(&B)
:(&*)
込みで完全一致 -
ボタン(B)
:&
なしでも一致 -
ボタン
:(&*)
なしでも一致
-
-
ボタン (&B)
※ニーモニックの前に半角スペース-
ボタン (&B)
:(&*)
込みで完全一致 -
ボタン (B)
:&
なしでも一致 -
ボタン
:(&*)
なし、かつスペースがなくても一致
-
CLK_SHORT
が指定されている場合はニーモニック(&
や(&*)
)が含む状態に対する部分一致を検索します
マウスクリック(CLK_RIGHTCLK
, CLK_LEFTCLK
, CLK_DBLCLK
)を指定した場合Win32 API(PostMessage)によるクリック処理が行われます
未指定の場合はAPI固有のクリック処理を行います
- CLK_ACC: デフォルトアクションを実行
- CLK_UIA:
また、マウスクリックを指定した場合は第四引数がFALSE
でもクリックが行われます
実装バージョン: 0.0.5
対象ウィンドウに命令コマンドを送信します
ID0
を更新します(※)
ctrlwin(ID, コマンド定数)
-
ID
ウィンドウID -
コマンド定数
以下の定数を指定できます- CLOSE
閉じる - CLOSE2
強制的に閉じる - ACTIVATE
アクティブにする - HIDE
非表示にする - SHOW
表示する - MIN
最小化する - MAX
最大化する - NORMAL
通常サイズに戻す - TOPMOST
最前面に固定する - NOTOPMOST
最前面固定を解除 - TOPNOACTV
最前面に移動するがアクティブにはしない
- CLOSE
※ 渡されたIDのウィンドウをID0
に紐付けする
ctrlwin(getid(GET_ACTIVE_WIN), HIDE)
sleep(1)
ctrlwin(0, SHOW)
実装バージョン: 0.0.5
対象ウィンドウの各種状態を取得します
戻り値 = status(ID, ST定数 [, ST定数, ST定数, ...])
-
ID
ウィンドウID -
ST定数
以下の定数を指定できます
定数を,
区切りで複数指定することもできます(最大21)
ST_ALL
は単一指定時のみ使えます-
ST_TITLE
ウィンドウタイトル -
ST_CLASS
ウィンドウクラス名 -
ST_X
ウィンドウ左上のX座標 -
ST_Y
ウィンドウ左上のY座標 -
ST_WIDTH
ウィンドウの幅 -
ST_HEIGHT
ウィンドウの高さ -
ST_CLX
ウィンドウのクライアント領域左上のX座標 -
ST_CLY
ウィンドウのクライアント領域左上のY座標 -
ST_CLWIDTH
ウィンドウのクライアント領域の幅 -
ST_CLHEIGHT
ウィンドウのクライアント領域の高さ -
ST_PARENT
親ウィンドウのID -
ST_ICON
最小化してればTRUE -
ST_MAXIMIZED
最大化してればTRUE -
ST_VISIBLE
ウィンドウが可視ならTRUE -
ST_ACTIVE
ウィンドウがアクティブならTRUE -
ST_BUSY
ウィンドウが応答なしならTRUE -
ST_ISID
ウィンドウが有効ならTRUE -
ST_WIN64
プロセスが64ビットかどうか -
ST_PATH
プロセスの実行ファイルのパス -
ST_PROCESS
プロセスID -
ST_MONITOR
ウィンドウが表示されているモニタ番号 (monitor関数に対応) -
ST_ALL
上記すべてを取得
-
-
戻り値
- 単一指定の場合 該当する値
- 複数指定、または
ST_ALL
の場合 値を格納した連想配列
キーはST定数
id = getid("uwsc", "HH") // uwscヘルプファイル
s = status(id, ST_TITLE, ST_CLASS, ST_HEIGHT, ST_WIDTH)
print s[ST_TITLE] // uwsc
print s[ST_CLASS] // HH Parent
print s[ST_HEIGHT] // 778
print s[ST_WIDTH] // 1251
対応バージョン: 0.3.0
モニタの情報を得ます
戻り値 = monitor([モニタ番号, MON定数])
-
モニタ番号 (省略可)
モニタ番号 (0から) -
MON定数 (省略可)
以下の定数を指定できます-
MON_X
: モニタのX座標 -
MON_Y
: モニタのY座標 -
MON_WIDTH
: モニタの幅 -
MON_HEIGHT
: モニタの高さ -
MON_PRIMARY
: プライマリ(メイン)モニタならTRUE -
MON_ISMAIN
:MON_PRIMARY
の別名 -
MON_NAME
: モニタ名 -
MON_WORK_X
: 作業エリアのX座標 -
MON_WORK_Y
: 作業エリアのY座標 -
MON_WORK_WIDTH
: 作業エリアの幅 -
MON_WORK_HEIGHT
: 作業エリアの高さ -
MON_ALL
: 上記すべて (デフォルト)
-
-
戻り値
- 引数なしで実行
モニタの数 - MON_ALL以外を指定
該当する値 - MON_ALL指定時
連想配列 - 該当モニタなし
False
- 引数なしで実行
for i = 0 to monitor() - 1
m = monitor(i, MON_ALL)
print "モニタ" + i + ": " + m[MON_NAME]
print m[MON_X] + ", " + m[MON_Y]
print m[MON_WIDTH] + " x " + m[MON_HEIGHT]
next
対応バージョン: 0.3.0
指定画像をスクリーン上から探してその座標を返します
- 注意 UWSCとは引数や戻り値に互換性がありません
-
注意 opencv4.5.4が必要です (opencv_world454.dllを参照します)
- ダウンロード
- Release OpenCV 4.5.4 · opencv/opencvを開く
-
opencv-4.5.4-vc14_vc15.exe
をダウンロード -
opencv-4.5.4-vc14_vc15.exe
を実行し、任意のフォルダに展開する
- dllを参照する
- 環境変数にパスを追加する方法
- 該当dllのあるパスを%PATH%に追加 (
C:\tools
に展開した場合)-
実行環境のみなら以下を実行 (そのPowerShellを実行中の間のみ有効)
$env:Path = "$env:Path;C:\tools\opencv\build\x64\vc15\bin\"
-
恒久的に設定するなら
- スタートメニューから 環境変数を編集 を実行
- ユーザー環境変数の
Path
をダブルクリック -
C:\tools\opencv\build\x64\vc15\bin
を追記 - 実行環境(PowerShellなど)を再起動
-
- 該当dllのあるパスを%PATH%に追加 (
- uwscrと同じディレクトリにdllを置く方法
-
opencv_world454.dll
をコピーする
-
- 環境変数にパスを追加する方法
- 将来的にはdllが不要になる予定です
- ダウンロード
結果 = chkimg(画像ファイル, スコア=95, 最大検索回数=5, x1=EMPTY, y1=EMPTY, x2=EMPTY, y2=EMPTY)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
画像ファイル | 文字列 | 必須 | 検索する画像のパス (jpg, bmp, png) |
スコア | 数値 | 省略可 | 画像に対する一致率を指定 (100-0) |
一致率が指定値以上であれば結果を返す | |||
100は完全一致、省略時は95 | |||
最大検索回数 | 数値 | 省略可 | 画面内を検索する回数の最大値 |
例: 該当画像が10個あっても5を指定すると5つ分だけ返す | |||
x1 | 数値 | 省略可 | 検索範囲: 左上x座標(left) |
y1 | 数値 | 省略可 | 検索範囲: 左上y座標(top) |
x2 | 数値 | 省略可 | 検索範囲: 右下x座標(right) |
y2 | 数値 | 省略可 | 検索範囲: 右下y座標(bottom) |
いずれも省略時(またはEMPTYの場合)は画面全体の座標になる | |||
結果 | 二次元配列 | 戻り値 | [x座標, y座標, スコア] |
for found in chkimg("hoge.png")
print found // [x, y, スコア]
next
実装バージョン: 0.0.4
マウスカーソルを移動します
mmv(x, y [, ms])
- x
移動先のX座標 - y
移動先のY座標 - ms (省略可)
マウスを移動行うまでの待機時間 (ミリ秒)
省略時は 0
実装バージョン: 0.0.4
マウスボタン操作を送信します
btn(ボタン種定数 [, 状態, x, y, ms])
- ボタン種類
- 以下の定数のいずれかを指定
-
LEFT
: 左クリック -
RIGHT
: 右クリック -
MIDDLE
: ホイルクリック -
WHEEL
: ホイル回転 (上下方向) -
WHEEL2
: ホイル回転 (左右方向) -
TOUCH
:未実装
-
- 以下の定数のいずれかを指定
- 状態 (省略可)
- LEFT,RIGHT,MIDDLE の場合以下の定数のいずれかを指定
- CLICK : ボタンクリック (デフォルト)
- DOWN : ボタン押し下げ
- UP : ボタン開放
- WHEEL,WHEEL2 の場合はノッチ数を指定
- WHEEL : 数値が正の場合
下
方向、負の場合上
方向にスクロール - WHEEL2: 数値が正の場合
右
方向、負の場合左
方向にスクロール
- WHEEL : 数値が正の場合
- LEFT,RIGHT,MIDDLE の場合以下の定数のいずれかを指定
- x (省略可)
移動先のX座標、省略時は現在のX座標 - y (省略可)
移動先のY座標、省略時は現在のY座標 - ms (省略可)
ボタン操作を行うまでの待機時間 (ミリ秒)
省略時は 0
実装バージョン: 0.0.4
キーボード入力を送信します
kbd(仮想キー [, 状態, ms])
- 仮想キー 以下のいずれかを指定
- 仮想キーコード定数 (
VK_*
) - 文字列 (※)
- 仮想キーコード定数 (
- 状態 (省略可) ※文字列指定時は無視されます
- CLICK : キークリック (デフォルト)
- DOWN : キー押し下げ
- UP : キー開放
- ms (省略可)
キーボード入力を行うまでの待機時間 (ミリ秒)
省略時は 0
// a が入力される
kbd(VK_A)
// A が入力される
kbd(VK_SHIFT, DOWN)
kbd(VK_A, CLICK, 100)
kbd(VK_SHIFT, UP, 100)
// A が入力される
kbd("A")
// あ が入力される
kbd("あ")
// abcde が入力される
kbd("abcde")
実装バージョン: 0.0.4
ウィンドウの位置やサイズを変更します
ID0
を更新します(※)
acw(id [, x, y, h, w, ms])
- id
ウィンドウID - x (省略可)
移動先のX座標、省略時は現在のX座標 - y (省略可)
移動先のY座標、省略時は現在のY座標 - w (省略可)
ウィンドウの幅、省略時は現在の幅 - h (省略可)
ウィンドウの高さ、省略時は現在の高さ - ms (省略可)
ウィンドウに変更を加えるまでの待機時間 (ミリ秒)
省略時は 0
※ 渡されたIDのウィンドウをID0
に紐付けする
acw(getid(GET_ACTIVE_WIN), 100, 100)
sleep(1)
acw(0, 200, 200)
ウィンドウの表示スケールが変更されている場合、指定した値通りにならない場合があります
例: 2736 x 1824 125%表示 の場合
acw(id, 100)
print status(id, ST_X) // 101
clkitem
やgetitem
などで対象となるロール (0.9.0
時点)
- クリック (
CLK_ACC
やITM_ACCCLK
)ROLE_SYSTEM_BUTTONDROPDOWN
ROLE_SYSTEM_BUTTONDROPDOWNGRID
ROLE_SYSTEM_BUTTONMENU
ROLE_SYSTEM_CELL
ROLE_SYSTEM_CHECKBUTTON
ROLE_SYSTEM_COLUMNHEADER
ROLE_SYSTEM_LINK
ROLE_SYSTEM_LISTITEM
ROLE_SYSTEM_MENUITEM
ROLE_SYSTEM_OUTLINEBUTTON
ROLE_SYSTEM_OUTLINEITEM
ROLE_SYSTEM_PAGETAB
ROLE_SYSTEM_PUSHBUTTON
ROLE_SYSTEM_RADIOBUTTON
ROLE_SYSTEM_ROWHEADER
ROLE_SYSTEM_SPLITBUTTON
- スタティックテキスト (
ITM_ACCTXT
)ROLE_SYSTEM_STATICTEXT
- エディットボックス (
ITM_ACCEDIT
)ROLE_SYSTEM_TEXT