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
条件に一致する一番最初(前面)のウィンドウのプロセスの実行ファイル名。
ControlList
条件に一致する最初のウィンドウ上のコントロールのClassNNの一覧を改行区切りで得る。
並び順はコントロールのZ順位の順になっている。
parsing loopでひとつずつ処理できる。
ウィンドウがコントロールを含まない場合は、空になる。
ControlListHWND
ControlListと同じだが、ClassNNの代わりにコントロールのウィンドウハンドルの一覧を取得する。
Count
条件に一致するウィンドウの数
List
条件に一致するウィンドウを全て列挙する。
OutputVarで指定した変数にはウィンドウの数が代入され、「OutputVar番号(1...)」というような名前の変数(例:OutputVar1)に順番にウィンドウハンドルが格納される。
存在する全てのウィンドウを列挙するには、WinTitleとWinTextを空にし、ExcludeTitleに存在し得ないタイトルを指定する。
MinMax
条件に一致する一番最初(前面)のウィンドウの状態を取得する。
最小化されていれば「-1」、最大化されていれば「1」、通常の状態なら「0」が取得される。
Transparent
ウィンドウの不透明度。
0が完全に不可視、255が完全に不透明。
半透明でないときは空になる。
TransColor
半透明化されている色。
特定の色が半透明になっているウィンドウでは「0x00CC99」のような形式でその色が取得される。それ以外の場合は空になる。
Style
ExStyle
ウィンドウのスタイル、拡張スタイルを8桁の16進数で得る。
スタイルについては、ウィンドウスタイル一覧を参照。
特定のスタイルが含まれているかを調べるには、TransformコマンドのBitAndを使う。(調べたいスタイルの数値とのBitAndが0でなければ、含まれている)

Remarks

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

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

Related

WinGetClass, WinGetTitle, MouseGetPos, 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