GETIDゲットアイディー関数

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

指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。UWSCでウィンドウを操作するのによく使う関数です。

引数に指定するタイトル・クラス名は、STATUS関数の第二引数にST_TITLE・ST_CLASSを指定することで取得することもできます。

指定したウィンドウを取得できない場合は-1を返すので、ウィンドウの存在有無を確かめることもできます。

構文
  1. Integer = GETID( タイトル, クラス名, 待ち時間秒, MDI子タイトル )
引数
タイトル (String,#getid)必須
識別したいウィンドウのタイトル (タイトルの一部分だけでもOK)
クラス名 (String = Empty)省略可
区別に必要でなければ省略して構いません (前方一致でのみ部分指定可)
待ち時間秒 (Single = 0)省略可
確認できるまで指定された秒数待ちます(0.01~)
0
0.1~10秒まで状況や負荷により自動判断 (デフォルト)
-1
無期限待ち
MDI子タイトル (String = Empty)省略可
MDIウィンドウ中の子ウィンドウタイトル
戻り値

そのウィンドウを識別するID (NGの時は -1)

GETID は始めに完全一致のウィンドウを探します。見つからなければ次に部分一致のウィンドウを探します。

特別なウィンドウの指定

GET_ACTIVE_WIN
アクティブウィンドウを返します
GET_FROMPOINT_WIN
マウスカーソル下のウィンドウ
GET_FROMPOINT_OBJ
マウスカーソル下のオブジェクト
GET_THISUWSC_WIN
UWSC自身
GET_LOGPRINT_WIN
ログ表示用ウィンドウ
GET_BALLOON_WIN
ふきだし用ウィンドウ(GET_FUKIDASI_WINでも可)
GET_FORM_WIN
フォーム画面ウィンドウ
GET_FORM_WIN2
フォーム画面ウィンドウ2
GET_SCHEDULE_WIN
スケジュール"指定Windowが現れた時"でキャッチしたウィンドウ('別プロセス実行'時はNG)

特別なウィンドウ

GET_ACTIVE_WIN

アクティブウィンドウ(現在入力操作を行える状態のウィンドウ)を取得します。

UWSC
結果
プレーンテキスト

GET_FROMPOINT_WIN

マウスカーソル下にあるウィンドウを取得します。アクティブ状態である必要はありません。

UWSC
結果
プレーンテキスト

GET_FROMPOINT_OBJ

マウスカーソル下のオブジェクトを取得します。

UWSC

GET_THISUWSC_WIN

現在実行しているUWSCのウィンドウIDを取得します。

UWSC
結果
プレーンテキスト

GET_LOGPRINT_WIN

PRINT時に表示されるログ表示用ウィンドウのIDを取得します。UWSC Debuggerで実行している場合はデバッガーのログが表示される枠のIDが取得されます。UWSファイルで実行した場合はタイトルがUScript、UWSC Debuggerの場合はタイトルなしです。

UWSC
結果
プレーンテキスト

GET_BALLOON_WIN

FUKIDASI関数またはBALLOON関数 (スクリプト関数)で表示される吹き出しのIDを取得します。

以下はBALLOON関数 (スクリプト関数)で表示させた吹き出しの位置を(x, y) = (10, 10)、サイズを(幅, 高さ) = (120, 60)に変更します。

UWSC

GET_FUKIDASI_WIN

FUKIDASI関数またはBALLOON関数 (スクリプト関数)で表示される吹き出しのIDを取得します。

以下は吹き出しを最小化にします。

UWSC

GET_FORM_WIN

CREATEFORM関数で作成したフォームのIDを取得します。

以下はフォームを座標(x, y) = (0, 0)の位置に移動させるプログラムです。カレントディレクトリに空でも良いのでindex.htmlを用意してから実行してください。

UWSC

以下はフォームを画面中央に移動するプログラムです。

UWSC

GET_FORM_WIN2

CREATEFORM関数のオプション指定の引数にFOM_FORM2を指定して作成したフォームのIDを取得します。

以下はフォームを座標(x, y) = (0, 0)の位置に移動させるプログラムです。

UWSC

GET_SCHEDULE_WIN

UWSC

UWSCの[設定]-[設定]-[スケジュール設定をする]-[タイマー]-[指定ウィンドウが現れた時]のTitle・Classを指定して起動したウィンドウのIDを取得します。別プロセスで実行にチェックが入っているときは取得できません。スケジュール設定の操作方法は使い方を参照。

[指定ウィンドウが現れた時]のClassにNOTEPADを指定してスクリプトに以下のプログラムを保存したUWSファイルのパスを指定すると、メモ帳を起動したときにスクリプトが起動しメモ帳を起動しましたと文字列が入力されます。

UWSC

デバッグするときは[指定ウィンドウが現れた時]を検知することは不可能なので、TitleとClassの値をGETID関数に直接指定することでIDを取得します。

UWSC

以下は[指定ウィンドウが現れた時]のTitleにメモ帳、ClassにNotepadを指定しているときのプログラムです。スケジュール設定しているときはGET_SCHEDULE_WINでIDを取得し、取得できなかったときはすでに起動しているメモ帳のIDを取得することで、デバッグもできるようになります。

UWSC

同じタイトル・クラス名のウィンドウを区別する

GETIDで取得できるのは1つだけです。同じタイトル・クラス名で複数のウィンドウを区別するにはGETALLWIN関数 (スクリプト関数)ですべてのウィンドウのIDをループし目的のIDを取得する必要があります。

以下のGETID2関数は第三引数に番号を指定することで、同じタイトル・クラス名があるときn番目のIDを取得することができます。

第三引数に0を指定すると、指定したタイトル・クラス名のウィンドウが何個あるかカウントすることもできます。

UWSC

GETID2の使い方

タイトルがメモ帳、クラス名がnotepadの2番目のウィンドウのIDを取得。

UWSC

タイトルがメモ帳、クラス名がnotepadのウィンドウの数を取得。

UWSC

開いてるすべてのメモ帳に対して操作を行う。

UWSC

MDI

MDIとはMultiple Document Interface (マルチ・ドキュメント・インタフェース)の略で、親ウィンドウ内に複数の子ウィンドウを持つアプリケーションのことです。

わかりやすいものとしては2010以前Offieが子ウィンドウを持つアプリケーションで、Excelを例にするとMicrosoft Excelが親ウィンドウ(GETIDのタイトル)、ブック名(Book1, Book2など)が子ウィンドウ(GETIDのMDI子タイトル)となります。

以下はExcelで新しいブックを開き、開いたブックを閉じてからExcelウィンドウを閉じるプログラムです。

UWSC

以下はMDIを使用したアプリケーションの例です。

  • Adobe Photoshop (CS4以降はMDIではなくTDIが標準となった)
  • Eudora
  • Microsoft Word
  • Microsoft Excel(Excel 2010まで)
  • 一太郎
  • Opera
  • Sleipnir
  • PSPad

多重起動の検知・制御

以下のプログラムをスクリプトの先頭に記述することで多重起動を制御することができます。

動作確認用のプログラムはスクリプトを起動した時刻を吹き出しに表示します。複数回スクリプトを起動すると以前のスクリプトを停止の方はスクリプトを複数個起動するとその度に時刻が更新されるので、以前のスクリプトが停止していることがわかります。

一方で自身のスクリプトを停止の方はスクリプトを複数個起動しても時刻は更新されないため、最初のスクリプトがそのまま残り後に起動した方が強制終了していることがわかります。

以前のスクリプトを停止

自身と同じ名前のスクリプトが実行中であれば、既に起動している方のスクリプトを停止します。

UWSC

以下は動作確認用のプログラムです。

UWSC

自身のスクリプトを停止

自身と同じ名前のスクリプトが実行中であれば、後に起動した方(自身)を停止します。

UWSC

以下は動作確認用プログラムです。

UWSC

プログラム干渉防止

他のUWSCプログラムが起動・動作しているとき、そのプログラムが終了するまで待機します。以下のプログラムをスクリプトの先頭に記述することで機能します。

UWSC

引数にIDを使う関数

  1. CHKBTN関数
  2. CLKITEM関数
  3. CTRLWIN関数
  4. DROPFILE関数
  5. GETALLWIN関数 (スクリプト関数)
  6. GETCTLHND関数 (スクリプト関数)
  7. GETITEM関数
  8. GETSLCTLST関数
  9. GETSLIDER関数
  10. GETSTR関数
  11. IDTOHND関数
  12. LOCKHARDEX関数
  13. MOUSEORG関数
  14. POSACC関数
  15. SAVEIMG関数 (スクリプト関数)
  16. SCKEY関数
  17. SENDSTR関数
  18. SETSLIDER関数
  19. STATUS関数

よく使うプログラムのクラス名一覧

  • Internet Explorer" width="1366" height="707"]
    タイトル
    Internet Explorer
    クラス名
    IEFrame
    UWSC
  • Google Chrome" width="1366" height="707"]
    タイトル
    Google Chrome
    クラス名
    Chrome_WidgetWin_1
    UWSC
  • Firefox" width="1366" height="707"]
    タイトル
    Mozilla Firefox
    クラス名
    MozillaWindowClass
    UWSC
  • Microsoft Edge" width="1366" height="707"]
    タイトル
    Microsoft Edge
    クラス名
    ApplicationFrameWindow
    UWSC
  • ユーザー アカウント制御" width="456" height="333"]
    タイトル
    ユーザー アカウント制御
    クラス名
    Credential Dialog Xaml Host
    UWSC
  • タスクマネージャー" width="1366" height="707"]
    タイトル
    タスク マネージャー
    クラス名
    TaskManagerWindow
    UWSC
  • メモ帳" width="1366" height="707"]
    タイトル
    メモ帳
    クラス名
    Notepad
    UWSC
  • ペイント" width="1366" height="707"]
    タイトル
    ペイント
    クラス名
    MSPaintApp
    UWSC
  • Microsoft Excel" width="1366" height="707"]
    タイトル
    Microsoft Excel
    クラス名
    XLMAIN
    UWSC
  • Microsoft Word" width="1366" height="707"]
    タイトル
    Microsoft Word
    クラス名
    OpusApp
    UWSC
  • Microsoft Outlook" width="1366" height="707"]
    タイトル
    Microsoft Outlook
    クラス名
    rctrl_renwnd32
    UWSC
  • UWSC Debugger" width="1366" height="707"]
    タイトル
    UWSC Debugger
    クラス名
    TFOya
    UWSC
  • UWSC Pro" width="216" height="59" style="width:216px;"]
    タイトル
    UWSC Pro
    クラス名
    TUMain_uwsc
    UWSC
  • #32770" width="669" height="473"]
    タイトル
    ダイアログ
    クラス名
    #32770
    UWSC
  • UWSC FUKIDASI" width="74" height="36" style="width:74px;"]
    タイトル
    クラス名
    TFfukidsi
    UWSC
  • NoxPlayer
    タイトル
    NoxPlayer
    クラス名
    Qt5QWindowIcon
    UWSC
  • インプットボックス
    タイトル
    UWSC -
    クラス名
    TUinpBox_uwsc
    UWSC
  • メッセージボックス
    タイトル
    UWSC -
    クラス名
    TUmsgDlg_uwsc
    UWSC
  • セレクトボックス
    タイトル
    UWSC -
    クラス名
    TUslctBox_uwsc
    UWSC
  • ポップアップメニュー
    タイトル
    クラス名
    #32768
    UWSC

使い方

ウィンドウのタイトルからIDを取得

タイトルにメモ帳が含まれるウィンドウのIDを取得します。以下のプログラムを実行するとIDにメモ帳のウィンドウIDが代入され、UWSCで操作するときに識別するIDとして使うことができるようになります。

EXEC関数でメモ帳を起動しているので、メモ帳が正しく起動していれば1を返します。起動していなければ-1を返します。

UWSC
結果
プレーンテキスト

複数のウィンドウIDを取得

EXEC関数でメモ帳・ペイント・電卓を起動し、それぞれのIDを出力します。

UWSC
結果
プレーンテキスト

この値はGETID関数を実行する前は別の値が割り当てられていて、GETID関数を実行したときに1から始まる整数が順に割り当てられます。

GETID関数を実行する前に割り当てていた値はGETALLWIN関数 (スクリプト関数)とSTATUS関数を組み合わせることで確認することができます。以下はメモ帳とペイントを起動した状態でプログラムを実行した結果です。

UWSC
結果
CSV

現在メモ帳はIDの値が11、ペイントは13として割り当てられていますが、GETID関数でメモ帳・ペイントのIDを取得すると以下のように割り当てが変更されます。具体的にはメモ帳のIDが11から1、ペイントのIDが13から2に変更され、元々1から12に割り当てられていたものが後ろにずれていきます。

UWSC
結果
CSV

GETID関数よりも先にGETALLWIN関数 (スクリプト関数)が実行されると、GETID関数で取得したIDは1からの連番にはならず、GETALLWIN関数 (スクリプト関数)実行時に割り当てられていたIDのままとなります。

UWSC
結果
プレーンテキスト

プログラム実行例

ファイル名を指定して実行で「ごみ箱」を開く

UWSC
使用関数

タスクバーの位置を取得する

UWSC
使用関数

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

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

UWSC
使用関数

電卓(ストアアプリ)を起動

UWSC
使用関数

PowerPointを起動する(Excel)

UWSC
使用関数

Outlookを起動する(Excel)

UWSC
使用関数

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

UWSC
使用関数

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

UWSC
使用関数

マウスカーソル下の文字情報を取得

UWSC
使用関数

Outlookが起動していなかったら起動する

UWSC
使用関数

マウスカーソル下のスクロールバー情報を取得

UWSC
結果
FFFTP
CSV
使用関数

Wordを起動する(Excel)

UWSC
使用関数

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

UWSC
使用関数

電卓で計算をする

UWSC
使用関数

音声認識でアプリを操作

UWSC
使用関数

アクティブウィンドウの左上にカーソルを移動

UWSC
使用関数

アクティブウィンドウが最大化されているかを調べる

アクティブウィンドウが最大化されているかを調べ数値を返します。最大化されている場合は0以外の数値、最大化されていない場合は0を返します。

UWSC
使用関数

音量を取得

UWSC
結果
プレーンテキスト
使用関数

ExcelファイルとCSVファイルをExcelにドロップして開く

CREATEOLEOBJで起動したExcelにファイルをドロップするとなぜか落ちるから、EXECで起動。

UWSC
使用関数

Internet ExplorerのタイトルとURLを取得

UWSC
使用関数

マウスカーソル下のウィンドウの左上の座標に移動する

UWSC
使用関数

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

UWSC
使用関数

参考文献

  1. https://ja.wikipedia.org/wiki/Multiple_Document_Interface#MDI%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E4%BE%8B

関連記事

STATUS関数 (スクリプト関数)
ウィンドウの各種状態を返します。
GETCTLHND関数 (スクリプト関数)
ボタン等、オブジェクトのハンドルを取得します。
ACW関数 (スクリプト関数)
ウィンドウの状態を変更、またはアクティブにします。
CTRLWIN関数 (スクリプト関数)
ウィンドウの状態を制御します。
GETSLIDER関数 (スクリプト関数)
スライダー(トラックバー、スクロールバー)の値を取得します。
HNDTOID関数 (スクリプト関数)
ハンドル値をIDに変換します。
IDTOHND関数 (スクリプト関数)
IDをハンドル値に変換します。
CHKBTN関数 (スクリプト関数)
ボタン類(ボタン、チェックボックス、ラジオボタン)の状態を返します。
CLKITEM関数 (スクリプト関数)
アイテムをクリックします。
GETITEM関数 (スクリプト関数)
キャプション文字やリスト等をすべて取得します。