WinGet

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

WinGet[編集]

ウィンドウハンドル(固有のID)や一覧、プロセスIDなどを取得。

WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]

Parameters[編集]

引数名 説明
OutputVar 結果を格納する変数名。
Cmd 何を取得するかを指定、省略時は ID。詳しくは下記参照。
WinTitle ウィンドウタイトルなど。
ウィンドウ指定の方法参照。
WinText ウィンドウに含まれるテキスト。
ExcludeTitle 除外タイトル。
ExcludeText 除外テキスト。

Cmdに指定するコマンド[編集]

ID 条件に一致する一番最初(前面)のウィンドウのウィンドウハンドル(固有のID)
IDLast 条件に一致する一番最後(背面)のウィンドウのウィンドウハンドル(固有のID)
ウィンドウが一つしかマッチしない場合は IDと変わらない。
WinActivateBottomのマッチ動作と同等。
PID 条件に一致する一番最初(前面)のウィンドウのPID(プロセスID)。 Processコマンドで使用する。
ProcessName 条件に一致する一番最初(前面)のウィンドウのプロセスの実行ファイル名。
ProcessPath AHKL [v1.1.01+]: ProcessNameに似ているが実行ファイル名だけでなくフルパスを取得する。
Count 条件に一致するウィンドウの数。
List 条件に一致するウィンドウを全て列挙する。
OutputVarで指定した変数にはウィンドウの数が代入され、 OutputVar番号(1...)というような名前の変数(例:OutputVar1)に順番にウィンドウハンドルが格納される。
存在する全てのウィンドウを列挙するには、WinTitleとWinTextを空にし、ExcludeTitleに存在し得ないタイトルを指定する。
ControlList 条件に一致する最初のウィンドウ上のコントロールのClassNNの一覧を改行区切りで得る。
並び順はコントロールのZ順位の順になっている。
parsing loopでひとつずつ処理できる。
ウィンドウがコントロールを含まない場合は、空になる。
ControlListHWND ControlListと同じだが、ClassNNの代わりにコントロールのウィンドウハンドルの一覧を取得する。
MinMax 条件に一致する一番最初(前面)のウィンドウの状態を取得する。
最小化されていれば -1、最大化されていれば 1、通常の状態なら 0が取得される。
Transparent ウィンドウの不透明度(ウィンドウを透過させるにはWinSetを参照)。
結果は以下の理由で空となる:
1) OSがXPより古い。2) 検索条件にマッチするウィンドウがない。3) ウィンドウが半透明でない。4) (OS挙動による) ウィンドウに透過が設定された後、ウィンドウが最小化された, 最小化から復帰した, サイズ変更されたなど他の条件によるエラー。
それ以外の場合、0~255の数値が格納される。 0が完全に不可視、 255が完全に不透明。例:
MouseGetPos,,, MouseWin
WinGet, Transparent, Transparent, ahk_id %MouseWin%  ; マウスカーソル位置のウィンドウの不透明度を取得
TransColor 半透明化されている色。
特定の色が半透明になっているウィンドウでは 0x00CC99のような形式でその色が取得される。それ以外の場合は空になる。
Style
ExStyle
ウィンドウのスタイル、拡張スタイルを8桁の16進数で得る。
スタイルについては、ウィンドウスタイル一覧を参照。
特定のスタイルが含まれているかを調べるには、& 演算子(ビット論理積)TransformコマンドのBitAndを使う。(調べたいスタイルの数値とのBitAndが0でなければ、含まれている)
WinGet, Style, Style, My Window Title
If (Style & 0x8000000)  ; 0x8000000 is WS_DISABLED.
  ... the window is disabled, so perform appropriate action.

Remarks[編集]

ウィンドウハンドルは16進数の形式で取得される。
取得したハンドルは、ウィンドウ関連コマンドのWinTitleを指定するところで ahk_id %OutputVar%というようにして使用できる。

ウィンドウID(ハンドル)はウィンドウ毎に常にユニークで、ウィンドウが破棄されるまで有効。 同一種類のウィンドウを再度立ち上げた場合は、新規のIDが発行される。

マウスカーソルの下のウィンドウのハンドルを取得するには、MouseGetPosコマンドを使う。

Related[編集]

WinGetClass, Process, WinGetTitle, MouseGetPos, ControlGet, ControlFocus, GroupAdd

Example(s)[編集]

WinGet, active_id, ID, A
WinMaximize, ahk_id %active_id%
MsgBox, The active window's ID is "%active_id%".
; This next example will visit all open windows and display info
; about each of them:
WinGet, id, list, , , Program Manager
Loop, %id%
{
  StringTrimRight, this_id, id%A_Index%, 0
  WinActivate, ahk_id %this_id%
  WinGetClass, this_class, ahk_id %this_id%
  WinGetTitle, this_title, ahk_id %this_id%
  MsgBox, 4, , Visiting All Windows`n%A_Index% of %id%`nahk_id %this_id%`nahk_class %this_class%`n%this_title%`n`nContinue?
  IfMsgBox, NO, Break
}
Example #3: Extract the individual control names from a ControlList:
WinGet, ActiveControlList, ControlList, A
Loop, Parse, ActiveControlList, `n
{
  MsgBox, 4,, Control #%A_Index% is "%A_LoopField%". Continue?
  IfMsgBox, No
    Break
}
Example #4: Display in real time the active window's control list:
#Persistent
SetTimer, WatchActiveWindow, 200
Return
WatchActiveWindow:
WinGet, ControlList, ControlList, A
ToolTip, %ControlList%
Return