관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

윈도우 지정의 방법 본문

AUTOHOTKEY/레퍼런스

윈도우 지정의 방법

님투 2007. 11. 5. 14:24
반응형

윈도우 지정의 방법

커멘드명의 머리에Win혹은Control(와)과 붙는 커멘드에는,WinTitle, WinText, ExcludeTitle, ExcludeText그렇다고 하는 인수를 취하는 것이 많다.
이러한 지정 방법은, 대개 모든 커멘드로 같아서, 여기서 정리해 설명한다.

WinTitle
윈도우의 타이틀 바등의 타이틀을 지정한다.
대문자 소문자는 구별된다.
그 밖에, 이후에 설명하는 지정이 가능.
대체로의 경우, 나머지의3인수는 생략 된다.
WinText
윈도우내에 포함되는 텍스트로 좁힌다
ExcludeTitle
무시하는 윈도우의 타이틀을 지정한다
ExcludeText
무시하는 윈도우의 텍스트를 지정한다

타이틀이나 텍스트의 체크는, 디폴트에서는 전방 일치가 되어 있다.
SetTitleMatchMode,2」라고 하는 커멘드로 부분 일치가 된다.
SetTitleMatchMode,3」(으)로 완전 일치.
SetTitleMatchMode,RegEx」에서는, 정규 표현에 의한 지정이 가능.

DetectHiddenWindows,On」(을)를 실시하지 않으면, 비표시의 윈도우는 무시된다.
다만, 후술의LastFoundWindow하지만AutoHotkey의 Gui윈도우의 경우,DetectHiddenWindows하지만Off그렇지만 검출된다.

DetectHiddenText,Off」(을)를 실시하면, 비표시의 텍스트는 무시된다.

Control계 커멘드의 「Control」인수

GUI컨트롤을 조작한다Control계 커멘드의 인수에는, 앞의4인수의 전에 「Control」라고 하는 인수를 취하는 것이 많다.
이 인수에는,ClassNN(클래스명과 인스턴스 번호)혹은, 버튼등의 텍스트에 포함되는 문자열을 지정한다.
생략 하면, 제일 전의 컨트롤이 사용된다.

Control계 커멘드로의 윈도우 핸들의 직접 지정

「Control」인수가 있는 컨트롤 조작계 커멘드에서는,WinTitle에 「ahk_id %controlHWND%」라고 하도록(듯이) 컨트롤의 윈도우 핸들을 지정해,Control인수를 생략 하는 것으로, 윈도우 핸들로 지정해 컨트롤을 조작할 수 있다.
컨트롤의 윈도우 핸들은, MouseGetPos, WinGet, ControlGet커멘드나, DllCall()함수에 의한 각종API의 호출에 의해서 취득할 수 있다.

ClassNN(을)를 이용한 컨트롤의 지정에서는, 클래스명이 「SysListView」인 컨트롤과 「SysListView32」인 컨트롤이 존재해, 「SysListView321」라고 한다ClassNN하지만 지정되었을 때, 「1번째의SysListView32」(을)를 지정했는지 「321번째의SysListView」(을)를 지정했는지를 분별할 수 없다.
이러한 문제가 있는 것부터,ClassNN보다 윈도우 핸들의 직접 지정을 사용하는 것이 바람직하다.
ClassNN보다 윈도우 핸들의 직접 지정이,2배정도 고속으로 동작한다.

윈도우 클래스의 지정

WinTitle(을)를 「ahk_class classname」(와)과 같이 지정하면, 윈도우 클래스가classname의 윈도우를 지정할 수 있다.
윈도우 클래스는, WinGetClass그리고 취득할 수 있는 것 외에 부속의 툴로 조사하는 일도 가능.

윈도우 핸들의 지정

WinTitle(을)를 「ahk_id 0x01234567」(와)과 같이 지정하면, 윈도우 핸들이0x01234567의 윈도우를 지정할 수 있다.
윈도우 핸들은, WinGet커멘드로 취득한 것을 사용할 수 있다.

윈도우 소유 프로세스로의 지정

WinTitle(을)를 「ahk_pid %pid%」(와)과 같이 지정하면, WinGet, Run, Process커멘드로 취득한 프로세스ID(PID)의 프로세스가 소유하는 윈도우를 대상으로 할 수 있다.

윈도우 그룹의 지정

WinTitle(을)를 「ahk_group GroupName」(와)과 같이 지정하면, GroupAdd커멘드로 작성한 윈도우 그룹에 대해서 일괄하고 조작을 실시할 수 있다.
WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose, WinKill그럼, 모든 윈도우가 조작된다.
그 이외의 커멘드에서는, 가장 앞에 있는 윈도우가 대상이 된다.

복수의 조건의 동시 지정

「%title% ahk_class %class% ahk_pid %pid%」(와)과 같이 반각 스페이스 혹은Tab문자로 단락지어 조건을 열거하는 것으로, 윈도우 타이틀이나ahk_class,ahk_pid,ahk_group의 조건을 조합해 지정할 수 있다.
윈도우 타이틀의 조건을 지정하는 경우는, 반드시 제일 최초로 기술한다.
스페이스가 두 개 이상 연속하고 있으면, 마지막 하나 이외는 직전의 조건의 일부이다고 보인다.

액티브 윈도우의 지정

WinTitle(을)를 「A」라고 지정해, 나머지의 인수를 생략 하면, 액티브한 윈도우를 지정할 수 있다.
만약 액티브 윈도우가 비표시로,DetectHiddenWindows하지만Off(이었)였던 경우, 일치하는 윈도우 없음이라는 것이 된다.

복수 윈도우가 매치했을 경우

WinTitle,WinText인수의 지정에 매치하는 윈도우가 다수 있었을 경우, 일번수전의 윈도우가 대상이 된다.

Last Found Window

IfWinExist, IfWinNotExist, IfWinActive, IfWinNotActive, WinWaitActive, WinWaitNotActive, WinWait의 커멘드로 검출된 윈도우는,Last Found Window(으)로서 기록된다.
WinTitle, WinText, ExcludeTitle, ExcludeText(을)를 모두 생략 했을 경우, 이 윈도우가 대상이 된다.
이것에 의해, 몇의 것도 윈도우 조작 커멘드로 같은 지정을 반복할 필요가 없어진다.

이 정보는 스렛드마다 보관 유지되어 세치기가 발생해도 써 바뀔 것은 없다.

마우스 커서아래의 윈도우·컨트롤

MouseGetPos(을)를 사용하면, 마우스아래의 윈도우 핸들과 컨트롤의ClassNN(을)를 취득할 수 있다.

윈도우 클래스명의 조사

윈도우 클래스나GUI컨트롤의ClassNN(을)를 조사하고 싶은 경우,AutoHotkey동고의AU3_Spy.exe(을)를 사용한다.
기동해 조사하고 싶은 윈도우를 액티브하게 하면 각종 정보가 표시된다.
GUI컨트롤의ClassNN(을)를 조사하고 싶은 경우는, 해당 컨트롤 위에 마우스 커서를 이동한다.

>>>>>>>>>>>>( Window Title )<<<<<<<<<<<<<
데스크탑
ahk_class ExploreWClass

>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<
On Screen:	x: 691	y: 545  (less often used)
In Window:	x: 307	y: 198

>>>>>>>>>>>>>( Pixel Color )<<<<<<<<<<<<<
10524816

>>>>>>>>>>>( Window Position )<<<<<<<<<<<
left: 384     top: 347     width: 800     height: 600

>>>>>>>>( Last Control Under Mouse )<<<<<<<
SysListView321

>>>>>>>>>( Status Bar Text )<<<<<<<<
(1): 
(2): 11.7 KB
(3): 마이 컴퓨터

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<
FolderView

>>>>>>>>>>( Hidden Window Text )<<<<<<<<<

>>>>>>>>>>>( TitleMatchMode=slow Visible Text )<<<<<<<<<
데스크탑
데스크탑

>>>>>>>>>>( TitleMatchMode=slow Hidden Text )<<<<<<<<<

AU3_Spy.exe(을)를 기동해 다른 윈도우를 액티브하게 하면, 상기와 같은 내용이 표시된다.
3행목이 윈도우 클래스,16행목이 마우스아래의 컨트롤의ClassNN.
Shift+Alt+Tab그리고AU3_Spy.exe의 윈도우로 전환하면,ClassNN등의 정보가 고정되므로 범위 선택으로 카피할 수 있다.

Example

IfWinExist, Untitled - Notepad
{
	WinActivate  ; Automatically uses the window found above.
	WinMaximize  ; same
	Send, Some text.{Enter}
	return
}


IfWinNotExist, Calculator
	return
else
{
	WinActivate  ; The above "IfWinNotExist" also set the "last found" window for us.
	WinMove, 40, 40  ; Move it to a new position.
	return
}


; Make a hotkey to maximize a window.
; Specify just "A" to make it operate on the active window:
^Up::WinMaximize, A
반응형

'AUTOHOTKEY > 레퍼런스' 카테고리의 다른 글

Gui,Add,StatusBar  (0) 2007.11.05
스크립트  (0) 2007.11.05
Gui,Default  (0) 2007.11.05
Gui,+/-Option  (0) 2007.11.05
Gui,Destroy  (0) 2007.11.05
Comments