Windows 페이지 파일이란 무엇이며 비활성화해야합니까?

Posted by 발전소장
2019. 8. 20. 17:03 Tip & Tech

이미지 크레디트 : Flickr의 Blake Patterson

Windows는 페이지 파일을 사용하여 컴퓨터의 임의 액세스 메모리가 채워질 때 보유 할 수없는 데이터를 저장합니다. 페이지 파일 설정을 조정할 수 있지만 Windows는 페이지 파일을 자체적으로 잘 관리 할 수 ​​있습니다.

Windows 페이지 파일이 다소 잘못 이해되었습니다. 사람들은 컴퓨터의 RAM보다 페이지 파일을 사용하는 것이 느리기 때문에 페이지 속도를 늦추는 원인으로 생각하지만 페이지 파일이없는 것보다 낫습니다.

이미지 크레디트 : Flickr의 Blake Patterson

페이지 파일의 작동 방식

스왑 파일, 페이지 파일 또는 페이징 파일이라고도하는 페이지 파일은 하드 드라이브의 파일입니다. 기본적으로 C : \ pagefile.sys에 있지만 Windows 탐색기에 보호 된 운영 체제 파일을 숨기지 않도록 지시하지 않으면 표시되지 않습니다.

컴퓨터는 RAM (임의 액세스 메모리)에서 사용중인 파일, 프로그램 및 기타 데이터를 하드 드라이브에서 읽는 것보다 RAM에서 읽는 것이 훨씬 빠르기 때문에 저장합니다. 예를 들어 Firefox를 열면 Firefox의 프로그램 파일을 하드 드라이브에서 읽고 RAM에 넣습니다. 컴퓨터는 하드 드라이브에서 동일한 파일을 반복해서 읽는 대신 RAM의 사본을 사용합니다.

프로그램은 작업중인 데이터를 여기에 저장합니다. 웹 페이지를 볼 때 웹 페이지가 다운로드되어 RAM에 저장됩니다. YouTube 비디오를 볼 때 비디오는 RAM에 저장됩니다.

이미지 크레디트 : Flickr의 Glenn Batuyong

이미지 크레디트 : Flickr의 Glenn Batuyong

RAM이 가득 차면 Windows는 일부 데이터를 RAM에서 하드 드라이브로 다시 이동하여 페이지 파일에 배치합니다. 이 파일은 가상 메모리의 한 형태입니다. 이 데이터를 하드 디스크에 쓰고 나중에 읽는 것이 RAM을 사용하는 것보다 훨씬 느리지 만 중요한 데이터를 버리고 프로그램이 충돌하는 대신 백업 메모리입니다. 데이터는 하드 드라이브에 저장됩니다.

Windows는 사용하지 않는 데이터를 페이지 파일로 이동하려고 시도합니다. 예를 들어, 프로그램을 오랫동안 최소화했지만 아무 것도하지 않으면 데이터가 RAM에서 페이지 파일로 이동 될 수 있습니다. 나중에 프로그램을 최대화하고 즉시 다시 시작하지 않고 다시 돌아 오는 데 시간이 걸리면 페이지 파일에서 다시 스왑됩니다. 이런 일이 발생하면 컴퓨터의 하드 디스크 표시등이 깜박입니다.

이미지 크레디트 : Honou on Flickr

이미지 크레디트 : Honou on Flickr

최신 컴퓨터에 충분한 RAM이 있으면 일반 사용자 컴퓨터는 일반적으로 일반적인 컴퓨터 사용에서 페이지 파일을 사용하지 않아야합니다. 하드 드라이브가 쇠약 해지기 시작하고 대량으로 열었을 때 프로그램 속도가 느려지기 시작하면 컴퓨터가 페이지 파일을 사용하고 있음을 나타냅니다. RAM을 추가하여 속도를 높일 수 있습니다. 예를 들어 백그라운드에서 실행중인 쓸모없는 프로그램을 제거하여 메모리를 확보 할 수도 있습니다.

오해 : 페이지 파일을 비활성화하면 성능 향상

어떤 사람들은 컴퓨터 속도를 높이기 위해 페이지 파일을 비활성화해야한다고 말합니다. 페이지 파일이 RAM보다 느리고 RAM이 충분하면 RAM을 사용해야 할 때 페이지 파일을 사용하여 컴퓨터의 속도가 느려집니다.

이것은 사실이 아닙니다. 사람들 은이 이론을 테스트 하여 많은 양의 RAM이있는 경우 Windows가 페이지 파일없이 실행될 수 있지만 페이지 파일을 비활성화하면 성능 이점이 없다는 것을 알았습니다.

그러나 페이지 파일을 비활성화하면 몇 가지 나쁜 결과가 발생할 수 있습니다. 프로그램이 사용 가능한 모든 메모리를 사용하기 시작하면 RAM에서 페이지 파일로 교체되는 대신 충돌이 시작됩니다. 또한 가상 시스템과 같이 많은 양의 메모리가 필요한 소프트웨어를 실행할 때 문제가 발생할 수 있습니다. 일부 프로그램은 실행을 거부 할 수도 있습니다.

요약하자면, 페이지 파일을 비활성화 할 이유가 없습니다. 하드 드라이브 공간이 다소 확보 될 수 있지만 잠재적 인 시스템 불안정성은 그만한 가치가 없습니다.

페이지 파일 관리

Windows가 자동으로 페이지 파일 설정을 관리합니다. 그러나 페이지 파일 설정을 조정하려면 고급 시스템 설정 창에서 수행 할 수 있습니다. 시작을 클릭하고 시작 메뉴에 고급 시스템 설정을 입력 한 후 Enter 키를 눌러 엽니 다.

성능에서 설정 버튼을 클릭하십시오.

고급 탭을 클릭하고 가상 메모리 섹션에서 변경 버튼을 클릭하십시오.

Windows는 기본적으로 페이지 파일 설정을 자동으로 관리합니다. 대부분의 사용자는이 설정을 그대로두고 Windows가 최선의 결정을 내릴 수 있도록해야합니다.

그러나 일부 상황에서 도움이 될 수있는 한 가지 조정은 페이지 파일을 다른 드라이브로 옮기는 것입니다. 컴퓨터에 두 개의 별도 하드 드라이브가있는 경우, 하나는 프로그램이 설치된 시스템 드라이브이고 다른 하나는 덜 사용되는 데이터 드라이브 인 경우 페이지 파일을 데이터 드라이브로 이동하면 페이지가 나타날 때 성능이 약간 향상 될 수 있습니다 파일이 사용 중입니다. 페이지 파일을 사용해야하는 경우 Windows가 이미 시스템 드라이브를 사용하고 있다고 가정하면 하드 드라이브 활동을 하나의 드라이브에 집중시키는 대신 분산시킵니다.

이것은 실제로 컴퓨터에 두 개의 별도 하드 드라이브가있는 경우에만 도움이됩니다. 하나의 하드 드라이브가 각각 고유 한 드라이브 문자를 가진 여러 개의 파티션으로 분리 된 경우 아무 것도 수행하지 않습니다. 파티션 여부에 관계없이 여전히 동일한 물리적 하드 드라이브입니다.


요약하면 페이지 파일은 Windows의 필수 부분입니다. 거의 사용되지 않더라도 프로그램이 비정상적으로 많은 양의 메모리를 사용하는 상황에서 사용할 수 있도록하는 것이 중요합니다.

페이지 파일이 있다고해도 컴퓨터 속도가 느려지지는 않지만 컴퓨터가 페이지 파일을 많이 사용하는 경우 RAM이 더 필요할 것입니다.

 

 

출처 : https://www.howtogeek.com/126430/htg-explains-what-is-the-windows-page-file-and-should-you-disable-it/

 

What Is the Windows Page File, and Should You Disable It?

Windows uses a page file to store data that can’t be held by your computer’s random-access memory when it fills up. While you can tweak the page file settings, Windows can manage the page file fine on its own.

www.howtogeek.com

 

 

요약하자면 가상 메모리를 비활성화하는것은 추천하지 않으며

가상 메모리는 윈도우가 알아서 사용하게 설정하는게 좋다.

만약 SSD가 물리적으로 두개 이상이라면 OS용 SSD와 다른 SSD에 가상 메모리를 설정하는게 성능상으로 이점이 있다.

오토핫키로 OCR(문자 인식)을 활용하는 방법!

Posted by 발전소장
2014. 8. 15. 20:11 Functions

오늘 소개해드릴 사용자 함수는 OCR.ahk 입니다.


OCR은 광학 문자 인식(Optical character recognition; OCR)의 준말로

사람이 쓰거나 기계로 인쇄한 문자의 영상을 이미지 스캐너로 획득하여 기계가 읽을 수 있는 문자로 변환하는 것이다. by 위키


오토핫키로 자동화 작업을 하면서 어느 부분에서 OCR 기능이 필요할때가 있습니다.


그럴때 이걸 응용하면 됩니다.


먼저 설명하기전에 주의점을 알려드리겠습니다.


한글은 인식을 못 합니다.

gocr.exe 라는 오픈소스 프로그램을 이용하는데 한글은 지원하지 않습니다.

숫자, 영문, 일문 등을 지원합니다.


문자의 크기와 폰트, 배경에 따라 인식률의 차이가 발생합니다.

아무래도 특정패턴으로 문자를 인식하기에 크기가 클수록, 폰트나 필체가 단정하고 깔끔할수록, 배경이 되도록 단순할수록 인식률이 좋습니다.

인식하고자 하는 문자만 정확히 인식영역에 들어오도록 크기를 지정하는게 중요합니다.


인식영역이 넓을수록 처리속도는 늦어집니다.

설명이 필요없겠죠.


해당 ahk의 출처는

http://www.autohotkey.com/board/topic/69127-ocrahk-library-for-recognizing-text-in-images/


스크립트와 예제를 첨부합니다.




압축파일 구조입니다.




알파벳 순서로 설명하겠습니다.



 dpjeg.exe

 djpeg.exe jpg파일을 pnm으로 변환하는 실행파일입니다. (pnm파일은 gocr.exe이 인식)

 Gdip.ahk

 Gdip.dll을 ahk로 활용해주는 ahk 스크립트 (화면을 캡쳐해서 jpg파일로 저장하는데 사용)

 gocr.exe

 gocr.exe pnm파일(이미지)을 인식하여 문자로 반환합니다.

 OCR.ahk

 OCR 기능을 처리하는 ahk 스크립트

 OCR-example.ahk

 OCR 기능 활용 예제

 OCR-preview.ahk

 OCR 기능 활용 미리보기로 직관적으로 이해할 수 있는 예제

 OCR-tests.ahk

 OCR 예제이지만 이해불가?


일단 OCR-preview.ahk 를 실행해보세요.


핑크색 영역안의 문자를 인식해서 툴팁에 표시해줍니다.




이런식으로 나오죠.

직관적으로 바로 이해가 됩니다.


widthToScan=200
heightToScan=50


스크립트 내용에 있는 변수 설정에서 widthToScan, heightToScan이 말 그대로 스캔할 영역의 넓이와 높이를 픽셀 단위로 지정하는 겁니다.

넓이 200, 높이 50 픽셀이라는 말이죠.


스크립트가 돌아가는 구조를 설명하자면


마우스 위치를 기준으로 가로 200, 세로 50 픽셀의 영역을 Gdip.dll을 이용하여 캡쳐한 후 jpg로 저장합니다. ( Gdip.ahk 활용 )


저장된 jpg를 pnm 파일로 변환합니다. ( djpeg.exe 활용 )


pnm 파일을 gocr.exe로 읽어들여 문자를 txt 파일로 저장합니다. ( gocr.exe 활용 )


저장된 txt 파일을 오토핫키 FileRead로 읽어들이고 표시합니다.


간단하죠.


특정 영역을 주기적으로(Loop 활용)


GetOCR(topLeftX, topLeftY, widthToScan, heightToScan, options)


를 이용해서 문자를 입력받습니다.


topLeftX는 말그대로 왼쪽상단 좌표를 말합니다.

X,Y 좌표와 넓이 높이를 입력받아 스캔 영역을 지정합니다.

option은 입력 안 할수있고(default)

Debug 모드

Numeric 모드로 숫자만 인식합니다.


사실 OCR로 입력받은 값을 바로 사용하기는 힘듭니다.

배경과 기타 잡스러운 문자도 출력되기때문이죠. (예를 들면 , . _ ; : 이런식)


따라서 regExReplace()로 필요없는 문자를 걸러주는 작업이 필요하죠.


outputText:=RegExReplace(inputText,"\D","") ; inputText 내용 중에 숫자가 아닌(\D)것을 제거("") 합니다.



덧붙이자면 앞서 말한바와 같이

Gdip.ahk와 OCR.ahk, gocr.exe, djpeg.exe (ahk는 #include 이용, exe는 FileInstall 이용)

파일들이 필요합니다.


자신의 스크립트에 OCR을 적용시켜 보세요!


AutoHotKey(오토핫키) 설명서 Winamp

Posted by 발전소장
2014. 8. 14. 15:00 AutoHotKey/misc

Automating Winamp

This section demonstrates how to control Winamp via hotkey even when it is minimized or inactive. This information has been tested with Winamp 2.78c and should work for Winamp 2.x and possibly other major releases as well. Please post changes and improvements in the forum or contact the author.

This example makes the Ctrl+Alt+P hotkey equivalent to pressing Winamp's pause/unpause button:

^!p::
SetTitleMatchMode, 2
IfWinNotExist, - Winamp
	IfWinNotExist, Winamp 2.  ; Adjust this if your Winamp is not 2.x
		return
; Otherwise, the above has set the "last found" window for us:
ControlSend, ahk_parent, c  ; Pause/Unpause
return

Here are some of the keyboard shortcuts available in Winamp 2.x (may work in other versions too). The above example can be revised to use any of these keys:

Key to send Effect
c Pause/UnPause
x Play/Restart/UnPause
v Stop
+v Stop with Fadeout
^v Stop after the current track
b Next Track
z Previous Track
{left} Rewind 5 seconds
{right} Fast-forward 5 seconds
{up} Turn Volume Up
{down} Turn Volume Down
; This next example asks Winamp which track number is currently active:
SetTitleMatchMode, 2
SendMessage, 1024, 0, 120, - Winamp
if ErrorLevel <> FAIL
{
	ErrorLevel++  ; Winamp's count starts at 0, so adjust by 1.
	MsgBox, Track #%ErrorLevel% is active or playing.
}

AutoHotKey(오토핫키) 설명서 Time

Posted by 발전소장
2014. 8. 14. 15:00 AutoHotKey/misc

일자 시각

YYYYMMDDHH24MISS

FileGetTime(이)나FileSetTime,FormatTime그리고 사용되는 타임 스탬프는,YYYYMMDDHH24MISS의 포맷의 문자열이다.
이 포맷은, 이하의 것을 연결했다14자리수의 숫자열이다.

부분의미
YYYY 4자리수의 서기년
MM 월(01-12)
DD 일(01-31)
HH24 시(00-23)
MI 분(00-59)
SS 초(00-59)

상기 요소 중 도중까지 밖에 지정하지 않았던 경우(례:20040401), 나머지의 요소는 최소의 값(MM,DD하01,HH24,MI,SS하00)이다고 보인다.

EnvAdd(이)나EnvSub커멘드에서는, 이 포맷의 일자 시각을 더해 인 나무 할 수 있다.

제한

일자 시각으로서 취급할 수 있는 시각의 범위는,1601해부터9999해까지이다.

편입 변수

편입 변수그리고 현재 일시의YYYYMMDDHH24MISS형식 문자열이나, 연월일 시분초등의 요소를 참조할 수 있다.

AutoHotKey(오토핫키) 설명서 Threads

Posted by 발전소장
2014. 8. 14. 14:59 AutoHotKey/misc

Threads

AutoHotkey(은)는 실제는 퍼포먼스 저하를 막기 위해, 의사적인 multi-thread를 채용하고 있다.
현재의 Threads의 실행중에hot key,타이머,메뉴 아이템 선택에 의해 다른 Threads가 불려 가면, 세치기에 의해 새로운 Threads가 개시되어 현재의 Threads는 새로운 Threads가 종료할 때까지 정지한다.
세치기는 몇 겹이나 행해지는 것이 가능.
ErrorLevel and SetKeyDelay등의 변수나 설정은, Threads 마다 보관 유지되어 끼어들어 온 Threads내에서 변경되어도, 끼어들어진 Threads 측에는 영향을 주지 않는다.

Threads의 수에는 상한이 있어, 디폴트는10하지만,#MaxThreads지령으로1...20의 사이에 설정할 수 있다.
각 hot key로 불려 가는 Threads의 수에도 상한이 있어, 디폴트는1하지만,#MaxThreadsPerHotkey지령으로 최대20까지 설정할 수 있다.

(비고)KeyHistory커멘드등에서 키 이력을 표시하면, 실행중의 Threads수를 표시할 수 있다.
ListHotkeys그럼, 어느 hot key가 Threads를 실행하고 있을지를 알 수 있다.

Threads 우선도

모든 Threads의 우선도는 디폴트로0(이)가 된다.
Thread커멘드로, 현재의 Threads의 우선도를 변경할 수 있다.
Hotkey커멘드의 인수로, hot key의 우선도를 지정할 수 있다.
Hotstring(은)는 정의시의 옵션에 의해 우선도를 지정할 수 있다.
SetTimer커멘드의 인수로, 타이머 기동의 우선도를 지정할 수 있다.
Menu커멘드의 인수로, 커스텀 메뉴 아이템의 우선도를 지정할 수 있다.
현재의 Threads보다 우선도가 낮은 경우, 세치기는 행해지지 않고, 조작은 무시된다.

OnExit에 의한 호출은, 현재 Threads의 우선도에 관계없이 실행된다.


AutoHotKey(오토핫키) 설명서 Styles

Posted by 발전소장
2014. 8. 14. 14:58 AutoHotKey/misc

윈도우 스타일 일람

윈도우나 컨트롤로 사용하는 스타일.
스타일은32비트의 정수치로,2진수로 했을 때의 각 형이1(이)라면, 그 자리수에 대응하는 스타일이 설정되어 있다고 하게 된다.
「(style & 0x00400000)!=0」(와)과 같은 식에서, 「style」변수에 격납된 스타일치에 특정의 스타일이 설정되어 있는지를 판정할 수 있다.

윈도우용 스타일

Common styles
Name Value Description
default for gui creation   WS_POPUP, WS_CAPTION, WS_SYSMENU, WS_MINIMIZEBOX
forced for gui creation   WS_CLIPSIBLINGS
WS_BORDER0x00800000경계를 가지는 윈도우를 작성합니다.
WS_POPUP0x80000000팝업 윈도우를 작성합니다.WS_CHILD 스타일과 함께 사용할 수 없습니다.
WS_CAPTION0x00C00000타이틀 바를 가지는 윈도우를 작성합니다 (암묵에 WS_BORDER 스타일을 가집니다).WS_DLGFRAME 스타일과 함께 사용할 수 없습니다.
WS_DISABLED0x08000000초기 상태로 사용 금지의 윈도우를 작성합니다.
WS_DLGFRAME0x00400000이중 경계를 가져, 타이틀을 가지지 않는 윈도우를 작성합니다.
WS_HSCROLL0x00100000수평 스크롤 바를 가지는 윈도우를 작성합니다.
WS_MAXIMIZE0x01000000최대 표시된 윈도우를 작성합니다.
WS_MAXIMIZEBOX0x00010000최대 표시 버튼을 가지는 윈도우를 작성합니다.
WS_MINIMIZE0x20000000초기 상태로 아이콘화 된 윈도우를 작성합니다.반드시 WS_OVERLAPPED 스타일과 함께 사용합니다.
WS_MINIMIZEBOX0x00020000아이콘화 버튼을 가지는 윈도우를 작성합니다.
WS_OVERLAPPED0오버랩 윈도우를 작성합니다.오버랩 윈도우는, 통상 캡션과 경계를 가집니다.
WS_OVERLAPPEDWINDOW0x00CF0000WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX 스타일을 가지는 오버랩 윈도우를 작성합니다.
WS_POPUPWINDOW0x80880000WS_BORDER,WS_POPUP,WS_SYSMENU 스타일을 가지는 팝업 윈도우를 작성합니다.컨트롤 메뉴를 가시로 하려면 ,WS_CAPTION 스타일과 WS_POPUPWINDOW (을)를 조합하지 않으면 안됩니다.
WS_SIZEBOX 0x0000F2C0 +/-Resize. Creates a window that has a sizing border. Same as the WS_THICKFRAME style.
WS_SYSMENU0x00080000타이틀 바에 컨트롤 메뉴 박스를 가지는 윈도우를 작성합니다.타이틀 바를 가지는 윈도우에만 사용합니다.
WS_THICKFRAME0x00040000윈도우의 사이즈 변경에 사용할 수 있는, 굵은 테두리를 가지는 윈도우를 작성합니다.
WS_VSCROLL0x00200000수직 스크롤 바를 가지는 윈도우를 작성합니다.
WS_VISIBLE0x10000000초기 상태로 가시의 윈도우를 작성합니다.
WS_CHILD0x40000000아이 윈도우를 작성합니다.WS_POPUP 스타일과 함께 사용할 수 없습니다.
WS_GROUP0x00020000유저가 방향 키를 사용해 다음의 컨트롤로 이동할 수 있는 컨트롤의 그룹의, 최초의 컨트롤을 지정합니다.최초의 컨트롤의 다음에 WS_GROUP 스타일을 FALSE (와)과 지정해 정의한 컨트롤은, 모두 같은 그룹에 속합니다.다음의 WS_GROUP 스타일을 가지는 컨트롤은, 다음의 그룹을 개시합니다 (즉, 다음의 그룹의 시작이, 전의 그룹이 끝나게 됩니다).

컨트롤용 스타일

Checkbox, Radio, GroupBox, Button
Name Value Description
default   BS_MULTILINE
WS_TABSTOP (except for GroupBox) -- however, radio buttons other than the first of each radio group lack this style by default. In addition, radio buttons have BS_NOTIFY so that double clicks can be detected.
forced   Button: BS_PUSHBUTTON or BS_DEFPUSHBUTTON
Radio: BS_AUTORADIOBUTTON
Checkbox: BS_AUTOCHECKBOX or BS_AUTO3STATE
GroupBox: BS_GROUPBOX
BS_LEFT 0x0100 +/-Left. Left-aligns the text in the button rectangle on the right side of the check box.
BS_PUSHLIKE 0x1000 Makes a button (such as a check box, three-state check box, or radio button) look and act like a push button. The button looks raised when it isn't pushed or checked, and sunken when it is pushed or checked.
BS_RIGHT 0x0200 +/-Right. Right-aligns text in the button rectangle on the right side of the check box.
BS_RIGHTBUTTON 0x0020 +Right (i.e. +Right includes both BS_RIGHT and BS_RIGHTBUTTON, but -Right removes only BS_RIGHT, not BS_RIGHTBUTTON). Positions a check box square or radio button circle on the right side of the control's available width.
BS_BOTTOM 0x0800 Places the text at the bottom of the button rectangle.
BS_CENTER 0x0300 +/-Center. Centers the text horizontally in the button rectangle.
BS_DEFPUSHBUTTON 0x0001 +/-Default. Creates a push button with a heavy black border. If the button is in a dialog box, the user can select the button by pressing the ENTER key, even when the button does not have the input focus. This style is useful for enabling the user to quickly select the most likely option, or default.
BS_MULTILINE 0x2000 +/-Wrap. Wraps the button text to multiple lines if the text string is too long to fit on a single line in the button rectangle.
BS_TOP 0x0400 Places text at the top of the button rectangle.
BS_VCENTER 0x0C00 Vertically centers text in the button rectangle.
BS_FLAT 0x8000 Specifies that the button is two-dimensional; it does not use the default shading to create a 3-D image.
DropDownList, ComboBox
Name Value Description
default   WS_TABSTOP
DropDownList: WS_VSCROLL
ComboBox: WS_VSCROLL, CBS_AUTOHSCROLL
forced   DropDownList: CBS_DROPDOWNLIST
ComboBox: Either CBS_DROPDOWN or CBS_SIMPLE
CBS_AUTOHSCROLL0x0040유저가 줄 끝을 넘어 문자를 입력하면, 에디트 컨트롤내의 텍스트를 자동적으로 오른쪽으로 스크롤 합니다.이 스타일이 설정되어 있지 않으면 사각형 경계내에 들어가는 텍스트 밖에 받아들일 수 없습니다.
CBS_DISABLENOSCROLL0x0800리스트 박스가 스크롤 하는 만큼 항목을 가지고 있지 않을 때에, 수직 스크롤 바를 사용할 수 없는 상태로 표시합니다.이 스타일을 지정하지 않으면 스크롤 하는 만큼 항목을 가지고 있지 않은 경우, 스크롤 바는 표시되지 않습니다.
CBS_LOWERCASE 0x4000 +/-Lowercase. Converts to lowercase any uppercase characters that are typed into the edit control of a combo box.
CBS_NOINTEGRALHEIGHT0x0400재즈 악단 박스의 사이즈는, 재즈 악단 박스를 작성할 경우에 어플리케이션이 지정한 사이즈와 같게 됩니다.통상은, 일부 밖에 표시할 수 없는 항목을 표시하지 않게,Windows (은)는 재즈 악단 박스의 사이즈를 변경합니다.
CBS_OEMCONVERT0x0080재즈 악단 박스의 에디트 컨트롤에 입력된 텍스트는,ANSI 캐릭터 세트로부터 OEM 캐릭터 세트에 변환되어 그 후,ANSI 캐릭터 세트에 되돌려집니다.이것에 의해, 어플리케이션이 재즈 악단 박스내의 ANSI 문자열을 OEM 문자로 변환하기 위해서 Windows 함수 AnsiToOem (을)를 호출했을 때, 올바른 문자 변환이 확실히 행해집니다.이 스타일은 파일명을 보관 유지하는 재즈 악단 박스로 가장 유용합니다.CBS_SIMPLE 또는 CBS_DROPDOWN 스타일로 작성된 재즈 악단 박스에서만 지정할 수 있습니다.
CBS_SIMPLE0x0001리스트 박스를 항상 표시합니다.리스트 박스의 현재의 선택 항목이 에디트 컨트롤에 표시됩니다.
CBS_SORT0x0100리스트 박스내에 표시되는 문자열을 자동적으로 소트 합니다.
CBS_UPPERCASE 0x2000 +/-Uppercase. Converts to uppercase any lowercase characters that are typed into the edit control of a combo box.
ListBox
Name Value Description
default   WS_TABSTOP, LBS_USETABSTOPS, WS_VSCROLL, and WS_EX_CLIENTEDGE (extended style E0x200).
forced   LBS_NOTIFY (supports detection of double-clicks)
LBS_DISABLENOSCROLL0x1000리스트 박스가 스크롤 하는 만큼 항목을 가지고 있지 않을 때에, 수직 스크롤 바를 사용 금지 상태로 표시합니다.이 스타일을 지정하지 않을 때에 스크롤 하는 만큼 항목을 가지고 있지 않으면 스크롤 바는 표시되지 않습니다.
LBS_NOINTEGRALHEIGHT0x0100리스트 박스를 작성했을 때, 그 사이즈가 어플리케이션으로 지정한 사이즈와 정확하게 같게 되는 것을 지정합니다.통상, 일부 밖에 표시할 수 없는 항목을 표시하지 않게,Windows 하지만 리스트 박스의 사이즈를 변경합니다.
LBS_EXTENDEDSEL0x0800 Shift 키와 마우스, 또는 특수한 키의 편성을 사용하고, 유저가 복수의 항목을 선택할 수 있도록 합니다.
LBS_MULTIPLESEL0x0008유저가 문자열을 클릭 또는 더블 클릭 할 때마다, 문자열의 선택이 교체됩니다.문자열은 몇 개에서도 선택할 수 있습니다.
LBS_NOSEL 0x4000 +/-ReadOnly. Specifies that the user can view list box strings but cannot select them.
LBS_SORT0x0002리스트 박스내의 문자열을 알파벳순서에 소트 합니다.
LBS_USETABSTOPS0x0080리스트 박스가 문자열을 묘화 할 경우에, 탭 문자를 인식해, 전개합니다.디폴트의 탭 위치는 32 다이얼로그 단위입니다 (다이얼로그 단위란, 수평 또는 수직의 길이입니다.1 수평 다이얼로그 단위는, 현재의 다이얼로그의 기본폭단위의 4 분 1 입니다.다이얼로그의 기본 단위는, 현재의 시스템 폰트의 높이와 폭을 기준에 계산됩니다.Windows 함수 GetDialogBaseUnits (은)는, 현재의 다이얼로그의 기본 단위를 피크셀로 돌려줍니다).
ListView
Name Value Description
default   WS_TABSTOP, LVS_REPORT, LVS_SHOWSELALWAYS, LVS_EX_FULLROWSELECT, LVS_EX_HEADERDRAGDROP, WS_EX_CLIENTEDGE (E0x200)
LVS_ALIGNLEFT 0x800아이콘 뷰 및 작은 아이콘 뷰로, 컨트롤의 좌단에 따라서 아이템이 배치됩니다.
LVS_ALIGNTOP 0아이콘 뷰 및 작은 아이콘 뷰로, 컨트롤의 상단을 따라서 아이템이 배치됩니다.
LVS_AUTOARRANGE 0x100아이콘 뷰 및 작은 아이콘 뷰로, 아이콘이 자동적으로 정렬합니다
LVS_EDITLABELS 0x200아이템의 텍스트를 인플레이션 의자로 편집할 수 있도록 합니다.친윈도우는, 반드시 LVN_ENDLABELEDIT 통지 메세지를 처리합니다.
LVS_ICON 0아이콘 뷰를 지정합니다.
LVS_LIST 0x3리스트 뷰를 지정합니다.
LVS_NOCOLUMNHEADER 0x4000열헤더가 리포트 뷰에 표시되지 않게 합니다.디폴트에서는, 리포트 뷰의 열은 헤더를 가집니다.
LVS_NOLABELWRAP 0x80아이콘 뷰의 1 행에 아이템 텍스트를 표시합니다.디폴트에서는, 아이템 텍스트는 아이콘 뷰내에서 랩 됩니다.
LVS_NOSCROLL 0x2000스크롤을 금지합니다.모든 아이템이 클라이언트 영역내에 없으면 안됩니다.
LVS_NOSORTHEADER 0x8000버튼과 같이 동작하지 않는 열헤더를 지정합니다.리포트 뷰의 열헤더를 클릭해도 소트와 같은 동작을 실행하지 않을 때에, 이 스타일이 유용합니다.
LVS_OWNERDATA0x1000This style specifies a virtual list-view control (not directly supported by AutoHotkey).
LVS_OWNERDRAWFIXED 0x400리포트 뷰의 아이템을 오너 윈도우를 묘화 할 수 있도록(듯이) 합니다.각 아이템을 묘화 하기 위해서, 리스트 뷰 컨트롤은 WM_DRAWITEM 메세지를 보냅니다.각 서브 아이템에 다른 메세지를 보낼 것은 없습니다.지정한 리스트 뷰 아이템의 아이템 데이터는DRAWITEMSTRUCT 구조체의 itemData 멤버가 보관 유지하고 있습니다.
LVS_REPORT 0x1리포트 뷰를 지정합니다.
LVS_SHAREIMAGELISTS 0x40컨트롤이, 할당할 수 있었던 이미지 리스트의 소유권을 가지지 않는 것을 나타내 보입니다 (즉, 컨트롤이 파기될 때도 이미지 리스트는 파기되지 않습니다).이 스타일을 사용하고, 같은 이미지 리스트를 복수의 리스트 뷰 컨트롤에 할당할 수 있습니다.
LVS_SHOWSELALWAYS 0x8컨트롤에 포커스가 없어도, 선택되고 있으면 항상 선택 상태로 표시합니다.
LVS_SINGLESEL 0x4한 번에 1 개의 아이템만을 선택할 수 있도록 합니다.디폴트에서는, 복수의 아이템을 선택할 수 있습니다.
LVS_SMALLICON 0x2작은 아이콘 뷰를 지정합니다.
LVS_SORTASCENDING 0x10아이템 텍스트를 기초로 해서, 아이템을 승순에 소트 합니다.
LVS_SORTDESCENDING 0x20아이템 텍스트를 기초로 해서, 아이템을 내림차순에 소트 합니다.
ListView확장 스타일
Name Value Description
LVS_EX_BORDERSELECT LV0x8000 When an item is selected the border color of the item changes rather than the item being highlighted (might be non-functional in recent operating systems).
LVS_EX_CHECKBOXES LV0x4

+/-Checked. Displays a checkbox with each item. When set to this style, the control creates and sets a state image list with two images using DrawFrameControl. State image 1 is the unchecked box, and state image 2 is the checked box. Setting the state image to zero removes the check box altogether.

Windows XP or later: Checkboxes are visible and functional with all list-view modes except the tile view mode introduced in Windows XP. Clicking a checkbox in tile view mode only selects the item; the state does not change.

LVS_EX_FLATSB LV0x100 Enables flat scroll bars in the list view.
LVS_EX_FULLROWSELECT LV0x20 When a row is selected, all its fields are highlighted. This style is available only in conjunction with the LVS_REPORT style.
LVS_EX_GRIDLINES LV0x1 +/-Grid. Displays gridlines around rows and columns. This style is available only in conjunction with the LVS_REPORT style.
LVS_EX_HEADERDRAGDROP LV0x10 Enables drag-and-drop reordering of columns in a list-view control. This style is only available to list-view controls that use the LVS_REPORT style.
LVS_EX_INFOTIP LV0x400 When a list-view control uses the LVS_EX_INFOTIP style, the LVN_GETINFOTIP notification message is sent to the parent window before displaying an item's ToolTip.
LVS_EX_LABELTIP LV0x4000 If a partially hidden label in any list-view mode lacks ToolTip text, the list-view control will unfold the label. If this style is not set, the list-view control will unfold partly hidden labels only for the large icon mode. Requires Windows XP or later, or the DLLs distributed with Internet Explorer 5.0 or later.
LVS_EX_MULTIWORKAREAS LV0x2000 If the list-view control has the LVS_AUTOARRANGE style, the control will not autoarrange its icons until one or more work areas are defined (see LVM_SETWORKAREAS). To be effective, this style must be set before any work areas are defined and any items have been added to the control.
LVS_EX_ONECLICKACTIVATE LV0x40 The list-view control sends an LVN_ITEMACTIVATE notification message to the parent window when the user clicks an item. This style also enables hot tracking in the list-view control. Hot tracking means that when the cursor moves over an item, it is highlighted but not selected. See the Extended List-View Styles Remarks section for a discussion of item activation.
LVS_EX_REGIONAL LV0x200 Sets the list-view window region to include only the item icons and text using SetWindowRgn. Any area that is not part of an item is excluded from the window region. This style is only available to list-view controls that use the LVS_ICON style.
LVS_EX_SIMPLESELECT LV0x100000 In icon view, moves the state image of the control to the top right of the large icon rendering. In views other than icon view there is no change. When the user changes the state by using the space bar, all selected items cycle over, not the item with the focus. Requires Windows XP or later.
LVS_EX_SUBITEMIMAGES LV0x2 Allows images to be displayed for fields beyond the first. This style is available only in conjunction with the LVS_REPORT style.
LVS_EX_TRACKSELECT LV0x8 Enables hot-track selection in a list-view control. Hot track selection means that an item is automatically selected when the cursor remains over the item for a certain period of time. The delay can be changed from the default system setting with a LVM_SETHOVERTIME message. This style applies to all styles of list-view control. You can check whether hot-track selection is enabled by calling SystemParametersInfo.
LVS_EX_TWOCLICKACTIVATE LV0x80 The list-view control sends an LVN_ITEMACTIVATE notification message to the parent window when the user double-clicks an item. This style also enables hot tracking in the list-view control. Hot tracking means that when the cursor moves over an item, it is highlighted but not selected.
LVS_EX_UNDERLINECOLD LV0x1000 Causes those non-hot items that may be activated to be displayed with underlined text. This style requires that LVS_EX_TWOCLICKACTIVATE be set also.
LVS_EX_UNDERLINEHOT LV0x800 Causes those hot items that may be activated to be displayed with underlined text. This style requires that LVS_EX_ONECLICKACTIVATE or LVS_EX_TWOCLICKACTIVATE also be set.
TreeView
Name Value Description
default WS_TABSTOP, TVS_SHOWSELALWAYS, TVS_HASLINES, TVS_LINESATROOT, TVS_HASBUTTONS, WS_EX_CLIENTEDGE (E0x200)
TVS_CHECKBOXES 0x100 아이템에 체크 박스를 붙입니다.일단 이 스타일이 설정되면, 체크 박스를 없앨 수 없습니다.
TVS_DISABLEDRAGDROP 0x10 트리뷰가 친윈도우에 TVN_BEGINDRAG 통지 메세지를 보내지 않게 합니다.
TVS_EDITLABELS 0x8 유저가 트리뷰의 아이템의 텍스트를 편집할 수 있도록 합니다.
TVS_FULLROWSELECT 0x1000 아이템을 그 열전체로 선택할 수 있도록 합니다.아이템이 있는 열의 어느 부분을 클릭해도 그 아이템이 선택됩니다.선택되면 열전체가 강조 표시됩니다.TVS_HASLINES 스타일과 조합해 지정할 수 없습니다.
TVS_HASBUTTONS 0x1 아이 아이템을 가질 때 친아이템의 옆에 + (이)나 - 의 버튼을 표시합니다.
TVS_HASLINES 0x2 아이템을 선으로 잇습니다.
TVS_INFOTIP 0x800 트리뷰는 툴 팁 정보를 얻기 위해서 친윈도우에 TVN_GETINFOTIP 통지 메세지를 보냅니다.
TVS_LINESATROOT 0x4 맨 위의 아이템에 선을 붙입니다.TVS_HASLINES 스타일이 지정되어 있지 않은 경우는 무시됩니다.
TVS_NOHSCROLL 0x8000 +/-HScroll. Disables horizontal scrolling in the control. The control will not display any horizontal scroll bars.
TVS_NONEVENHEIGHT 0x4000 트리뷰에 TVM_SETITEMHEIGHT 메세지를 보내는 것으로, 아이템의 높이를 설정할 수 있도록 합니다.(디폴트에서는 아이템의 높이는 균등입니다.)
TVS_NOSCROLL 0x2000 트리뷰가 스크롤 하지 않게 합니다.스크롤 바도 표시하지 않습니다.
TVS_NOTOOLTIPS 0x80 아이템이 트리뷰 에서 비어져 나오고 있을 때 툴 팁이 붙지 않게 합니다.
TVS_RTLREADING 0x40 아라비아어나 헤브라이어등의 시스템에 대하고, 오른쪽에서 좌향에 표시합니다.일본어의 시스템에서는 지정할 수 없습니다.
TVS_SHOWSELALWAYS 0x20 트리뷰가 포커스를 가지고 있지 않은 상태에서도, 아이템 선택 상태가 표시되도록(듯이) 합니다.
TVS_SINGLEEXPAND 0x400 선택된 아이템만이 전개되도록(듯이) 합니다.
TVS_TRACKSELECT 0x200 마우스 커서가 아이템 위에 왔을 때에 밑줄이 붙습니다.
Edit
Name Value Description
default   WS_TABSTOP and WS_EX_CLIENTEDGE (extended style E0x200) If an Edit is auto-detected as multi-line due to its starting contents containing multiple lines, its height being taller than 1 row, or its row-count having been explicitly specified as greater than 1, the following styles will be applied by default: WS_VSCROLL, ES_WANTRETURN, and ES_AUTOVSCROLL If an Edit is auto-detected as a single line, it defaults to having ES_AUTOHSCROLL.
forced    
ES_AUTOHSCROLL0x0080유저가 줄 끝에 문자를 입력했을 때에, 텍스트를 자동적으로 10 문자분우에 스크롤 합니다.유저가 Enter 키를 누르면, 컨트롤은, 위치 0 에 되돌리도록(듯이) 텍스트 전체를 스크롤 합니다.
ES_AUTOVSCROLL0x0040유저가 맨 마지막 줄로 Enter 키를 눌렀을 때, 자동적으로 1 페이지 분죠에 텍스트를 스크롤 합니다.
ES_CENTER0x00011 행 또는 복수행의 에디트 컨트롤로, 텍스트를 centering로 표시합니다.
ES_LOWERCASE0x0010에디트 컨트롤에 입력된 문자를 모두 소문자로 변환합니다.
ES_NOHIDESEL0x0100통상, 에디트 컨트롤이 입력초점을 잃으면 선택이 통상의 표시로 돌아와, 입력초점을 받았을 때에 선택을 강조 표시합니다.ES_NOHIDESEL (은)는, 이 디폴트의 동작을 실시하지 않게 합니다.
ES_NUMBER 0x2000 +/-Number. Accepts into the edit control only digits to be typed.
ES_OEMCONVERT0x0400에디트 컨트롤에 입력된 텍스트를,ANSI 캐릭터 세트로부터 OEM 캐릭터 세트로 변환해, 그 후 ANSI 캐릭터 세트에 되돌립니다.이것에 의해, 어플리케이션이 재즈 악단 박스내의 ANSI 문자열을 OEM 문자열로 변환하기 위해서 Windows 함수 AnsiToOem (을)를 호출할 때, 올바른 변환이 확실히 행해집니다.이 스타일은, 파일명을 보관 유지하는 에디트 컨트롤에서는 가장 유용합니다.
ES_MULTILINE0x0004복수행의 에디트 컨트롤을 지정합니다 (디폴트는 1 행의 에디트 컨트롤입니다).ES_AUTOVSCROLL 스타일이 지정되어 있으면, 에디트 컨트롤은 가능한 한 많은 행을 표시해, 유저가 Enter 키를 눌렀을 때에 수직 방향으로 스크롤 합니다.ES_AUTOVSCROLL 하지만 지정되어 있지 않으면 에디트 컨트롤은 가능한 한 많은 행을 표시해, 그 이상 표시할 수 없게 되었을 때에 유저가 Enter 키를 누르면 beep음을 울립니다.ES_AUTOHSCROLL 스타일이 지정되면, 복수행의 에디트 컨트롤은, 카렛트가 컨트롤의 우단을 넘었을 때에 자동적으로 수평 방향으로 스크롤 합니다.새로운 행을 개시할 때는, 유저는 Enter 키를 누르지 않으면 안됩니다.ES_AUTOHSCROLL 하지만 지정되지 않으면 필요에 따라서 자동적으로 다음의 행의 초에 단어를 되풀이합니다.Enter 키를 눌러도 새로운 행이 시작됩니다.단어의 즉시 위치는, 윈도우의 사이즈에 의해서 정해집니다.윈도우의 사이즈가 변경되면, 즉시 위치도 변경되어 텍스트가 재표시됩니다.복수행의 에디트 컨트롤에는, 스크롤 바를 갖게할 수 있습니다.스크롤 바를 가지는 에디트 컨트롤은 자기 자신으로 스크롤 바 메세지를 처리합니다.스크롤 바를 가지지 않는 에디트 컨트롤에서는, 위에서 설명한 것처럼 스크롤을 해 친윈도우로부터 보내진 임의의 스크롤 메세지를 처리합니다.
ES_PASSWORD0x0020에디트 컨트롤에 입력된 모든 문자를 asterisk (*) 그리고 표시합니다.어플리케이션은 SetPasswordChar 멤버 함수를 사용하고, 표시하는 문자를 변경할 수 있습니다.
ES_READONLY0x0800에디트 컨트롤내에서 텍스트의 입력이나 편집을 할 수 없게 합니다.
ES_RIGHT0x00021 행 또는 복수행의 에디트 컨트롤로, 텍스트를 오른쪽맞춤으로 표시합니다.
ES_UPPERCASE0x0008에디트 컨트롤에 입력된 모든 문자를 대문자로 변환합니다.
ES_WANTRETURN0x1000유저가 다이얼로그 박스의 복수행의 에디트 컨트롤에 텍스트를 입력하고 있을 때 Enter 키를 누르면 왕복대 리턴이 삽입되는 것을 나타냅니다.이 스타일이 지정되어 있지 않을 때에 Enter 키를 누르면, 다이얼로그 박스의 디폴트의 푸쉬 버튼을 누른 것 것과 같게 됩니다.이 스타일은,1 행의 에디트 컨트롤에서는 효과가 없습니다.
Text,Picture
Name Value Description
default    
forced   Picture: SS_BITMAP
SS_BLACKFRAME0x07윈도우의 테두리와 같은 색으로 묘화 되는 테두리를 가지는 박스를 지정합니다.디폴트는 흑입니다.
SS_BLACKRECT0x04윈도우의 테두리의 묘화에 사용되는 색으로 전부 칠해진 사각형을 지정합니다.디폴트는 흑입니다.
SS_CENTER0x01단순한 사각형을 지정해, 그 중으로 지정된 텍스트를 centering로 표시합니다.텍스트는 표시되기 전에 서식화 됩니다.줄 끝을 넘는 단어는 자동적으로 다음의 행에 되접어 꺾이고 중앙에 가지런히 할 수 있습니다.
SS_ETCHEDFRAME 0x12 Draws the frame of the static control using the EDGE_ETCHED edge style.
SS_ETCHEDHORZ 0x10 Draws the top and bottom edges of the static control using the EDGE_ETCHED edge style.
SS_ETCHEDVERT 0x11 Draws the left and right edges of the static control using the EDGE_ETCHED edge style.
SS_GRAYFRAME0x08화면의 배경색 (데스크탑) (와)과 같은 색으로 묘화 되는 테두리의 박스를 지정합니다.디폴트는 회색입니다.
SS_GRAYRECT0x05화면의 백그라운드를 전부 칠하는데 사용하는 색으로 전부 칠해진 사각형을 지정합니다.디폴트는 회색입니다.
SS_LEFT0x0000단순한 사각형을 지정해, 그 중으로 지정된 텍스트를 왼쪽 가지런히 해로 표시합니다.텍스트는 표시되기 전에 서식화 됩니다.줄 끝을 넘는 단어는 자동적으로 다음의 행에 되접어 꺾이고 왼쪽으로 가지런히 할 수 있습니다.
SS_LEFTNOWORDWRAP0x0C단순한 사각형을 지정해, 그 중으로 지정된 텍스트를 왼쪽 가지런히 해로 표시합니다.텍스트는 표시되기 전에 서식화 됩니다.탭은 전개됩니다만, 단어는 되접어 꺾이지 않습니다.줄 끝을 넘는 텍스트는 클립 됩니다.
SS_NOPREFIX0x80이 스타일을 지정하지 않는 한,Windows (은)는 컨트롤의 텍스트내의 ampersand(&) (&) 문자를 가속기의 프레픽스 문자로서 해석합니다.이 경우, ampersand(&) (&) (은)는 제거되어 문자열중의 그 다음의 문자에 밑줄을 붙일 수 있습니다.스태틱 컨트롤이 이 기능을 필요로 하지 않는 텍스트를 가지고 있을 때는,SS_NOPREFIX (을)를 추가합니다.이 스태틱 컨트롤의 스타일은, 정의 떠날 수 있어 모든 스태틱 컨트롤에 포함할 수 있습니다.비트마다의 OR 연산자를 사용하고, 다른 스타일과 SS_NOPREFIX (을)를 조합해 지정할 수 있습니다.이 스타일은, 다이얼로그 박스의 스태틱 컨트롤에 파일명이나 ampersand(&) (&) (을)를 가지는 그 외의 문자열을 표시할 필요가 있을 때 등에 사용합니다.
SS_NOTIFY 0x0100 Sends the parent window the STN_CLICKED notification when the user clicks the control.
SS_RIGHT0x0002단순한 사각형을 지정해, 그 중으로 지정된 텍스트를 오른쪽맞춤으로 표시합니다.텍스트는 표시되기 전에 서식화 됩니다.줄 끝을 넘는 단어는 자동적으로 다음의 행에 되접어 꺾이고 오른쪽으로 가지런히 할 수 있습니다.
SS_SUNKEN 0x1000 Draws a half-sunken border around a static control.
SS_WHITEFRAME0x09윈도우의 배경색과 같은 색으로 묘화 되는 테두리를 가지는 박스를 지정합니다.디폴트는 흰색입니다.
SS_WHITERECT0x06윈도우의 백그라운드를 전부 칠하는데 사용되는 색으로 전부 칠해진 사각형을 지정합니다.디폴트는 흰색입니다.
Picture
Name Value Description
forced   아이콘과 커서에서는 「SS_ICON」, 그 외에서는 「SS_BITMAP」
SS_REALSIZECONTROL0x40[Windows XP or later] Adjusts the bitmap to fit the size of the control.
SS_CENTERIMAGE0x200Centers the bitmap in the control. If the bitmap is too large, it will be clipped. For text controls If the control contains a single line of text, the text is centered vertically within the available height of the control
Microsoft Windows XP: This style bit no longer results in unused portions of the control being filled with the color of the top left pixel of the bitmap or icon. Unused portions of the control will remain the background color.
UpDonw
Name Value Description
default   UDS_ARROWKEYS, UDS_ALIGNRIGHT, UDS_SETBUDDYINT, and UDS_AUTOBUDDY.
UDS_WRAP0x1범위의 시점 또는 종점을 넘어 증감되었을 때에 위치를 "랩" 합니다.
UDS_SETBUDDYINT0x2위치가 변경되었을 때에,WM_SETTEXT 메세지를 사용하고, 바디 윈도우의 텍스트를 컨트롤이 설정합니다.텍스트는,10 진문자열 또는 16 진문자열로서 서식화 된 위치로부터 완성됩니다.
UDS_ALIGNRIGHT0x4바디 윈도우의 우단의 근처에 스핀 버튼 컨트롤을 배치합니다.바디 윈도우의 폭은, 컨트롤의 폭에 따라 감소합니다.
UDS_ALIGNLEFT0x8바디 윈도우의 좌단의 근처에 스핀 버튼 컨트롤을 배치합니다.바디 윈도우의 폭은, 컨트롤의 폭에 따라 감소합니다.
UDS_AUTOBUDDY0x10컨트롤의 바디 윈도우로서Z 순서로 직전의 윈도우를 자동적으로 선택합니다.
UDS_ARROWKEYS0x20오름새의 화살표 또는 아래로 향한 커서 키가 밀렸을 때에, 컨트롤이 위치를 증감합니다.
UDS_HORZ0x40컨트롤의 화살표를 상하가 아니고, 좌우를 가리키도록(듯이) 합니다.
UDS_NOTHOUSANDS0x8010 진 3 자리수 마다 1000 단위의 단락을 삽입하지 않습니다.
UDS_HOTTRACK0x100Causes the control to exhibit "hot tracking" behavior. That is, it highlights the control's buttons as the mouse passes over them. This style requires Microsoft Windows 98 or Windows 2000. If the system is running Windows 95 NT4, the flag is ignored. The flag is also ignored on Windows XP when the desktop theme overrides it.
DateTime
Name Value Description
default   DTS_SHORTDATECENTURYFORMAT and WS_TABSTOP (+/-Tabstop)
DTS_UPDOWN 0x1 Provides an up-down control to the right of the control to modify date-time values, which replaces the of the drop-down month calendar that would otherwise be available.
DTS_SHOWNONE 0x2 Displays a checkbox inside the control that users can uncheck to make the control have no date/time selected. Whenever the control has no date/time, Gui Submit and GuiControlGet will retrieve a blank value (empty string).
DTS_SHORTDATEFORMAT 0x0 Displays the date in short format. In some locales, it looks like 6/1/05 or 6/1/2005. On older operating systems, a two-digit year might be displayed. This is why DTS_SHORTDATECENTURYFORMAT is the default and not DTS_SHORTDATEFORMAT.
DTS_LONGDATEFORMAT 0x4 Format word "LongDate". Displays the date in long format. In some locales, it looks like Wednesday, June 01, 2005.
DTS_SHORTDATECENTURYFORMAT 0xC Format word blank/omitted. Displays the date in short format with four-digit year. In some locales, it looks like 6/1/2005. If the system's version of Comctl32.dll is older than 5.8, this style is not supported and DTS_SHORTDATEFORMAT is automatically substituted.
DTS_TIMEFORMAT 0x9 Format word "Time". Displays only the time, which in some locales looks like 5:31:42 PM.
DTS_APPCANPARSE 0x10 Not yet supported. Allows the owner to parse user input and take necessary action. It enables users to edit within the client area of the control when they press the F2 key. The control sends DTN_USERSTRING notification messages when users are finished.
DTS_RIGHTALIGN 0x20 +/-Right. The calendar will drop down on the right side of the control instead of the left.
(colors inside the drop-down calendar)   The colors of the day numbers inside the drop-down calendar obey that set by the Gui Font command or the c (Color) option. To change the colors of other parts of the calendar, follow this example:
Gui +LastFound
SendMessage, 0x1006, 4, 0xFFAA99, SysDateTimePick321 ; 0x1006 is DTM_SETMCCOLOR. 4 is MCSC_MONTHBK (background color). The color must be specified in BGR vs. RGB format (red and blue components swapped).
MonthCal
Name Value Description
default   UDS_ARROWKEYS, UDS_ALIGNRIGHT, UDS_SETBUDDYINT, and UDS_AUTOBUDDY.
MCS_DAYSTATE 0x1 Makes the control send MCN_GETDAYSTATE notifications to request information about which days should be displayed in bold. [Not yet supported]
MCS_MULTISELECT 0x2 Named option "Multi". Allows the user to select a range of dates rather than being limited to a single date. By default, the maximum range is 366 days, which can be changed by sending the MCM_SETMAXSELCOUNT message to the control. For example:
Gui +LastFound
SendMessage, 0x1004, 7, 0, SysMonthCal321 ; 7 days. 0x1004 is MCM_SETMAXSELCOUNT.
MCS_WEEKNUMBERS 0x4 Displays week numbers (1-52) to the left of each row of days. Week 1 is defined as the first week that contains at least four days.
MCS_NOTODAYCIRCLE 0x8 Prevents the circling of today's date within the control.
MCS_NOTODAY 0x10 Prevents the display of today's date at the bottom of the control.
(colors)   The colors of the day numbers inside the calendar obey that set by the Gui Font command or the c (Color) option. To change the colors of other parts of the calendar, follow this example:
Gui +LastFound
SendMessage, 0x100A, 5, 0xFFAA99, SysMonthCal321 ; 0x100A is MCM_SETCOLOR. 5 is MCSC_TITLETEXT (color of title text). The color must be specified in BGR vs. RGB format (red and blue components swapped).
Tab
Name Value Description
default   WS_TABSTOP and TCS_MULTILINE
forced   WS_CLIPSIBLINGS
TCS_OWNERDRAWFIXED: forced on or off as required by the control's background color and/or text color.
TCS_SCROLLOPPOSITE 0x0001 Unneeded tabs scroll to the opposite side of the control when a tab is selected.
TCS_BOTTOM 0x0002 +/-Bottom. Tabs appear at the bottom of the control instead of the top.
TCS_RIGHT 0x0002 Tabs appear vertically on the right side of controls that use the TCS_VERTICAL style.
TCS_MULTISELECT 0x0004 Multiple tabs can be selected by holding down CTRL when clicking. This style must be used with the TCS_BUTTONS style.
TCS_FLATBUTTONS 0x0008 Selected tabs appear as being indented into the background while other tabs appear as being on the same plane as the background. This style only affects tab controls with the TCS_BUTTONS style.
TCS_FORCEICONLEFT 0x0010 Icons are aligned with the left edge of each fixed-width tab. This style can only be used with the TCS_FIXEDWIDTH style.
TCS_FORCELABELLEFT 0x0020 Labels are aligned with the left edge of each fixed-width tab; that is, the label is displayed immediately to the right of the icon instead of being centered. This style can only be used with the TCS_FIXEDWIDTH style, and it implies the TCS_FORCEICONLEFT style.
TCS_HOTTRACK 0x0040 Items under the pointer are automatically highlighted
TCS_VERTICAL 0x0080 +/-Left or +/-Right. Tabs appear at the left side of the control, with tab text displayed vertically. This style is valid only when used with the TCS_MULTILINE style. To make tabs appear on the right side of the control, also use the TCS_RIGHT style. This style might not function correctly on Windows XP and beyond if a visual theme is in effect. A possible workaround to also specify the "buttons" style; or use "Gui, -theme" prior to adding the tab control, and "Gui, +theme" afterward. This style will not correctly display the tabs if a custom background color or text color is in effect. To workaround this, specify -Background and/or cDefault in the tab control's options.
TCS_BUTTONS 0x0100 +/-Buttons. Tabs appear as buttons, and no border is drawn around the display area.
TCS_SINGLELINE 0x0000 +/-Wrap. Only one row of tabs is displayed. The user can scroll to see more tabs, if necessary. This style is the default.
TCS_MULTILINE 0x0200 +/-Wrap. Multiple rows of tabs are displayed, if necessary, so all tabs are visible at once.
TCS_RIGHTJUSTIFY 0x0000 The width of each tab is increased, if necessary, so that each row of tabs fills the entire width of the tab control. This window style is ignored unless the TCS_MULTILINE style is also specified.
TCS_FIXEDWIDTH 0x0400 All tabs are the same width. This style cannot be combined with the TCS_RIGHTJUSTIFY style.
TCS_RAGGEDRIGHT 0x0800 Rows of tabs will not be stretched to fill the entire width of the control. This style is the default.
TCS_FOCUSONBUTTONDOWN 0x1000 The tab control receives the input focus when clicked.
TCS_OWNERDRAWFIXED 0x2000 The parent window is responsible for drawing tabs.
TCS_TOOLTIPS 0x4000 The tab control has a tooltip control associated with it.
TCS_FOCUSNEVER 0x8000 The tab control does not receive the input focus when clicked.

확장 윈도우 스타일

ExStyle
Name Value Description
WS_EX_DLGMODALFRAME 0x00000001 이중의 경계선을 가지는 윈도우를 작성합니다.
WS_EX_NOPARENTNOTIFY 0x00000004 이 스타일로 작성된 아이 윈도우가 작성되거나 파기 되거나 할 때, 그 친윈도우에 WM_PARENTNOTIFY 메세지를 보내지 않게 지정합니다.
WS_EX_TOPMOST 0x00000008 맨 앞면윈도우를 작성합니다.윈도우가 비액티브한 상태에서도, 다른 윈도우의 전면에 표시됩니다. SetWindowPos 함수를 사용하면, 비맨 앞면윈도우로 변경할 수 있습니다.
WS_EX_ACCEPTFILES 0x00000010 드래그 앤드 드롭으로, 파일을 받아 들입니다.
WS_EX_TRANSPARENT 0x00000020 투과 윈도우를 작성합니다.이 윈도우아래에 있는 어떠한 윈도우도, 차단해지는 일 없이 표시됩니다.
WS_EX_MDICHILD 0x00000040 MDI 아이 윈도우를 작성합니다.
WS_EX_TOOLWINDOW 0x00000080 툴 윈도우를 작성합니다.툴 윈도우는 통상의 타이틀 바보다 작은 타이틀 바를 가집니다.태스크바에는 표시되지 않습니다.유저가[Alt]키와[Tab]키를 동시에 누르면 나타나는 다이얼로그내에도, 표시되지 않습니다.
WS_EX_WINDOWEDGE 0x00000100 윈도우가 분위기가 산 인연의 경계선을 가지도록(듯이) 지정합니다.
WS_EX_CLIENTEDGE 0x00000200 인연이 가라앉아 보이는 경계선을 가지는 윈도우를 지정합니다.
WS_EX_CONTEXTHELP 0x00000400 다이알로그 박스의 타이틀 바에[?]버튼을 추가합니다. 유저가 이 버튼을 클릭하면, 마우스 포인터에 물음표가 붙습니다.그 후, 유저가 다이알로그 박스내의 컨트롤을 클릭하면, 컨트롤은 WM_HELP 메세지를 받아들입니다.컨트롤은 다이얼로그의 처리에 그 메세지를 보냅니다.
WS_EX_RIGHT 0x00001000 오른쪽맞춤 된 프롭퍼티를 가지는 윈도우를 작성합니다.헤브라이어나 아라비아어를 서포트하고 있는 시스템으로 유효합니다.다른 언어로 이 스타일을 지정하면 에러가 됩니다.
WS_EX_LEFT 0x00000000 왼쪽 가지런히 해 된 프롭퍼티를 가지는 윈도우를 작성합니다.(디폴트)
WS_EX_RTLREADING 0x00002000 금방 다른 곳으로의 독해 순서를 가지는 프롭퍼티를 가진 윈도우를 작성합니다.헤브라이어나 아라비아어를 서포트하고 있는 시스템으로 유효합니다.다른 언어로 이 스타일을 지정하면 에러가 됩니다.
WS_EX_LTRREADING 0x00000000 왼쪽에서 오른쪽에의 읽어내 순서를 가지는 프롭퍼티를 가진 윈도우를 작성합니다.(디폴트)
WS_EX_LEFTSCROLLBAR 0x00004000 수직 스크롤 바가 클라이언트 영역의 좌측으로 놓여집니다.헤브라이어나 아라비아어를 서포트하고 있는 시스템으로 유효합니다.다른 언어로 이 스타일을 지정하면 에러가 됩니다.
WS_EX_RIGHTSCROLLBAR 0x00000000 수직 스크롤 바가 클라이언트 영역의 우측으로 놓여집니다.(디폴트)
WS_EX_CONTROLPARENT 0x00010000 유저가[Tab]키를 사용해 아이 윈도우간을 이동할 수 있도록 합니다.
WS_EX_STATICEDGE 0x00020000 유저의 입력을 받아들이지 않는 항목용의, 입체적으로 보이는 경계 스타일을 가지는 윈도우를 작성합니다.
WS_EX_APPWINDOW 0x00040000 윈도우가 최소화되면, 톱 레벨 윈도우가 태스크바상에 놓여집니다.
WS_EX_OVERLAPPEDWINDOW 0x00000300 WS_EX_WINDOWEDGE (와)과 WS_EX_CLIENTEDGE 의 편성입니다.
WS_EX_PALETTEWINDOW 0x00000188 WS_EX_WINDOWEDGE (와)과 WS_EX_TOOLWINDOW (와)과 WS_EX_TOPMOST 의 편성입니다.

AutoHotKey(오토핫키) 설명서 SendMessageList

Posted by 발전소장
2014. 8. 14. 14:58 AutoHotKey/misc

윈도우 메세지 일람

일반적인 메세지의 일람에 대해서는,WinAPI Database for VB Programmer의 알파벳순서 표시 「W」의 항등이 자세하다.

AutoHotKey(오토핫키) 설명서 PostMessage/SendMessage Tutorial

Posted by 발전소장
2014. 8. 14. 14:57 AutoHotKey/misc

PostMessage/SendMessage관련

윈도우 메세지에 대해

Windows의GUI(은)는, 시스템이나 어플리케이션이 윈도우나GUI컨트롤에 대해서 윈도우 메세지를 송신해, 윈도우를 소유하는 어플리케이션이 보내진 메세지에 대응한 동작을 실시하는 것으로 성립되고 있다.
AutoHotkey그렇지만,PostMessage(이)나SendMessage의 커멘드로 윈도우 메세지를 송신하는 것으로써, 윈도우에 대해서 여러가지 조작을 실시할 수 있다.

윈도우 메세지나 각 메세지의 동작에 대해서는,Web위에 많은 자료가 있다.
일반적인 메세지의 일람에 대해서는,WinAPI Database for VB Programmer의 알파벳순서 표시 「W」의 항등이 자세하다.

WM_COMMAND의 커멘드 번호를 조사한다

「WM_COMMAND」메세지를 보내면, 메뉴등의 커멘드를 실행시킬 수 있다.
WM_COMMAND(을)를 보내려면 ,Msg인수에 「0x111」(을)를 지정한다.
wParam인수에는 커멘드ID(을)를 지정한다.

커멘드ID(을)를 조사하는 간단한 방법은,Resource Hacker(을)를 사용하는 방법이다.
조사하고 싶은 실행 파일을 열어, 트리의 「Menu」이하를 보면,

MENUITEM "&File...   \tL",  40029

(와)과 같은 형식에서 메뉴 항목이 기술되고 있다.
제일 마지막 숫자가, 메뉴 항목에 대응하는 커멘드ID이다.

또, 트리의 「Accelerators」이하에서는,

VK_A, 40019, NOINVERT, CONTROL, VIRTKEY

(와)과 같은 행이 열거되고 있다.
커멘드명이 쓰여지지 않기 때문에 알기 힘들지만, 단축 키에 대응하는 커멘드ID하지만 조사할 수 있다.

이러한 방법에서는, 툴바 밖에 할당할 수 있지 않은 커멘드ID(을)를 조사하는 것은 할 수 없다.
거기서,툴바 버튼의 커멘드ID(을)를 조사하는 스크립트(을)를 작성했다.
표준적인 툴바이면, 버튼 번호에 대응하는 커멘드ID(을)를 조사할 수 있을 것이다.

Windows부속의 페인트의 툴 박스와 같은 표준적으로 없는 툴바의 경우, 이 스크립트에서도 커멘드ID(을)를 조사할 수 없지만,창콘등의 툴로 실행된 커멘드를 감시해 조사할 수 있는 경우도 있다.

Delphi(이)나VisualBasic등, 일부의 개발 환경에서 만들어진 소프트의 경우, 커멘드ID하지만 일정이 아니거나 하고, 커멘드ID(을)를 조사해도 도움이 되지 않는다.

by Rajat

This page discusses the PostMessage and SendMessage commands and will answer some questions like:

"How do I press a button on a minimized window?"
"How do I select a menu item when WinMenuSelectItem doesn't work with it?!"
"This is a skinnable window.... how do I send a command that works every time?"
"and what about hidden windows?!"


Requirements: AutoHotkey v1.0.09+ and Winspector Spy (http://www.windows-spy.com)

As a first example, note that WinMenuSelectItem fails to work with the menu bar on Outlook Express's "New Message" window. In other words, this code will not work:

WinMenuSelectItem, New Message,, &Insert, &Picture...

 

But PostMessage can get the job done:

PostMessage, 0x111, 40239, 0, , New Message

Works like a charm! But what the heck is that? 0x111 is the hex code of wm_command message and 40239 is the code that this particular window understands as menu-item 'Insert Picture' selection. Now let me tell you how to find a value such as 40239:

  1. Open Winspector Spy and a "New Message" window.
  2. Drag the crosshair from Winspector Spy's window to "New Message" window's titlebar (the portion not covered by Winspector Spy's overlay).
  3. Right click the selected window in the list on left and select 'Messages'.
  4. Right click the blank window and select 'Edit message filter'.
  5. Press the 'filter all' button and then dbl click 'wm_command' on the list on left. This way you will only monitor this message.
  6. Now go to the "New Message" window and select from its menu bar: Insert > Picture.
  7. Come back to Winspector Spy and press the traffic light button to pause monitoring.
  8. Expand the wm_command messages that've accumulated (forget others if any).
  9. What you want to look for (usually) is a code 0 message. sometimes there are wm_command messages saying 'win activated' or 'win destroyed' and other stuff.. not needed. You'll find that there's a message saying 'Control ID: 40239' ...that's it!
  10. Now put that in the above command and you've got it! It's the wParam value.

For the next example I'm taking Paint because possibly everyone will have that. Now let's say it's an app where you have to select a tool from a toolbar using AutoHotkey; say the dropper tool is to be selected.

What will you do? Most probably a mouse click at the toolbar button, right? But toolbars can be moved and hidden! This one can be moved/hidden too. So if the target user has done any of this then your script will fail at that point. But the following command will still work:

PostMessage, 0x111, 639,,,untitled - Paint

Another advantage to PostMessage is that the Window can be in the background; by contrast, sending mouse clicks would require it to be active.


Here are some more examples. Note: I'm using WinXP Pro (SP1) ... if you use a different OS then your params may change (only applicable to apps like Wordpad and Notepad that come with windows; for others the params shouldn't vary):

;makes writing color teal in Wordpad
PostMessage, 0x111, 32788, 0, , Document - WordPad

;opens about box in Notepad
PostMessage, 0x111, 65, 0, , Untitled - Notepad

;toggles word-wrap in Notepad
PostMessage, 0x111, 32, 0, , Untitled - Notepad

;play/pause in Windows Media Player
PostMessage, 0x111, 32808, 0, , Windows Media Player

;suspend the hotkeys of a running AHK script!
DetectHiddenWindows, on
SetTitleMatchMode, 2
PostMessage, 0x111, 32800,,,MyScript.ahk - AutoHotkey


This above was for PostMessage. SendMessage works the same way but additionally waits for a return value, which can be used for things such as getting the currently playing track in Winamp (see Automating Winamp for an example).

Here are some more notes:

  • The note above regarding OS being XP and msg values changing with different OSes is purely cautionary. if you've found a msg that works on your system (with a certain version of a software) then you can be sure it'll work on another system too with the same version of the software. In addition, most apps keep these msg values the same even on different versions of themselves (e.g. Windows Media Player and Winamp).
  • If you've set the filter to show only wm_command in Winspector Spy and still you're getting a flood of messages then right click that message and select hide (msg name)... you don't want to have a look at a msg that appears without you interacting with the target software.
  • The right pointing arrow in Winspector Spy shows the msg values and the blurred left pointing arrows show the returned value. A 0 (zero) value can by default safely be taken as 'no error' (use it with SendMessage, the return value will be in %ErrorLevel%).
  • For posting to partial title match add this to script:
    SetTitleMatchMode, 2
  • For posting to hidden windows add this to script:
    DetectHiddenWindows, On

Note: There are apps with which this technique doesn't work. I've had mixed luck with VB and Delphi apps. This technique is best used with C, C++ apps. With VB apps the 'LParam' of the same command keeps changing from one run to another. With Delphi apps... the GUI of some apps doesn't even use wm_command. It probably uses mouse pos & clicks.

Go and explore.... and share your experiences in the AutoHotkey Forum. Feedback is welcome!

This tutorial is not meant for total newbies (no offense meant) since these commands are considered advanced features. So if after reading the above you've not made heads or tails of it, please forget it.

-Rajat


AutoHotKey(오토핫키) 설명서 Performance

Posted by 발전소장
2014. 8. 14. 14:55 AutoHotKey/misc

Script & Hotkey Performance

Scripts are semi-compiled while they're being loaded and syntax-checked. In addition to reducing the memory consumed by the script, this process also enhances runtime performance (by orders of magnitude in some cases). The performance boost is greatest when SetBatchLines is -1, meaning that the script is running at maximum speed.

In addition to SetBatchLines, the following commands may also affect performance depending on the nature of the script: SetKeyDelay, SetMouseDelay, SetWinDelay, SetControlDelay, and SetDefaultMouseSpeed.

Here are the technical details of the semi-compiling process:

  • Input and output variables (when their names don't contain references to other variables) and group names are resolved to memory addresses.
  • Loops, blocks, IFs, and ELSEs are given the memory addresses of their related jump-points in the script.
  • The destination of each Hotkey, Gosub, and Goto is resolved to a memory address unless it's a variable.
  • Command names are replaced with their addresses in a jump table.
  • Each line is parsed into a list of parameters.
  • Each parameter is parsed into a list of variable references (if any).
  • Each variable reference is resolved to a memory address.

AutoHotKey(오토핫키) 설명서 Override

Posted by 발전소장
2014. 8. 14. 14:54 AutoHotKey/misc

Overriding or Disabling Hotkeys

You can disable all built-in Windows hotkeys except Win+L and Win+U by making the following change to the registry (should work on all OSes, reboot is probably required):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
NoWinKeys REG_DWORD 0x00000001 (1)

But read on if you want to do more than just disable them all. Note that most of the below examples are not supported on Windows Me/98/95.

Hotkeys owned by another application can be overridden or disabled simply by assigning them to an action in the script. The most common use for this feature is to change the hotkeys that are built into Windows itself. For example, if you wish Win+E (the shortcut key that launches Windows Explorer) to perform some other action, use this:

#e::
MsgBox, This hotkey is now owned by the script.
return

In this next example, the Win+R hotkey, which is used to open the RUN window, is completely disabled:

#r::return

Similarly, to disable both Windows keys, use this:

Lwin::return
Rwin::return

To disable or change an application's non-global hotkey (that is, a shortcut key that only works when that application is the active window), consider the following example which disables Control+P (Print) only for Notepad, leaving the key in effect for all other types of windows:

$^p::
SetTitleMatchMode, 2
IfWinActive, - Notepad, , Return
Send, ^p
return

In the above example, the $ prefix is needed so that the hotkey can "send itself" without activating itself (which would otherwise trigger a warning dialog about an infinite loop).

You can try out any of the above examples by copying them into a new text file such as "Override.ahk", then launching the file.