오토핫키 강좌 11강 - 비활성마우스, 비활성키보드

ControlClick, ControlSend, PostMessage, SendMessage



비활성이란?

컴퓨터 기억장치 내에 로드되었지만 아직 실행되고 있지 않은 작업을 비활성이라고 합니다.

비활성 프로그램을 키보드입력과 마우스동작을 할 수 있습니다.


예를들면 인터넷과 메모장을 실행 시켜놨습니다.

인터넷을 할땐 인터넷은 활성이고, 메모장은 비활성입니다.

인터넷을 하는 동안에 메모장에 글을 작성하거나 클릭되게 할 수 있습니다.



※ 비활성 키보드

[문법]

ControlSend, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText


[설명]

Control : ClassNN 값을 입력합니다.

Keys : 작성하고 싶은 내용을 입력하세요.

WinTitle : 창 제목입니다.

WinText : 매개변수는 목표 창 텍스트의 부문자열입니다.

ExcludeTitle : 제목에 이 값이 있는 창은 배제합니다.

ExcludeText : 텍스트에 이 값이 있는 창은 배제합니다.


[비활성키보드 자주 사용하는 문법]

ControlSend, ClassNN값, 내용, 창제목


비활성 키보드

비활성 메모장에 A키를 누릅니다.


비활성키보드(ControlSend).ahk


ControlSend는 방향키가 안됩니다.

방향키(←,↑,↓,→) 입력은 PostMessage 사용하세요.





※ 비활성 마우스

[문법]

ControlClick, Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText


[설명]

Control-or-Pos : 좌표를 입력하거나 ClassNN 값을 사용합니다.

WinTitle : 창 제목입니다.

WinText : 존재하면, 이 매개변수는 목표 창 텍스트의 부문자열입니다

WhichButton : 마우스버튼 LEFT, RIGHT, MIDDLE 넣습니다. 비어 있으면 LEFT버튼이 사용됩니다.

ClickCount : 클릭횟수입니다.

Options : 기호들을 사용합니다.

Options 기호

설명

NA

신뢰성을 개선할 수 있습니다

D

마우스 버튼을 누르지만 떼지 않습니다

U

마우스 버튼을 뗍니다

POS

단어 Pos를 Options 아무데나 지정하면, 위의 Control-or-Pos 매개변수에 기술되어 있듯이 무조건 X/Y 위치 지정 모드를 사용합니다

Xn

n에다 클릭할 X 위치를 지정합니다. 이 위치는 컨트롤의 좌상 모서리에 상대적입니다. 지정하지 않으면, 클릭이 컨트롤의 수평-중앙에 일어납니다

Yn

n에다 클릭할 Y 위치를 지정합니다. 이 위치는 콘트롤의 좌상 모서리에 상대적입니다. 지정하지 않으면 클릭이 수직-중앙에 일어납니다

X

십진수를 사용합니다

Y

십진수를 사용합니다

ExcludeTitle : 제목에 이 값이 있는 창은 무시합니다.

ExcludeText : 텍스트에 이 값이 있는 창은 무시합니다.


[비활성마우스 자주 사용하는 문법]

ControlClick, X좌표 Y좌표, 창제목,,마우스버튼(Left, Right), 클릭횟수


비활성 마우스

새폴더에서 마우스왼쪽을 두번 클릭합니다.


비활성마우스(ControlClick).ahk





※ 비활성 (PostMessage, SendMessage)

[문법]

PostMessage, Msg, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

SendMessage, Msg, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout


[설명]

Msg : 메시지코드입니다.

wParam, lParam : 키 값입니다. 생락하면 0 됩니다.

Control : ClassNN 값입니다.

WinTitle : 창 제목입니다.

WinText : 존재하면, 이 매개변수는 목표 창 텍스트의 부문자열입니다.

ExcludeTitle : 텍스트에 이 값이 있는 창은 무시합니다.

Timeout : 목표 창이 메시지를 처리하기를 기다릴 밀리초의 최대 개수. 생략하면 기본값은 5000 (밀리초)입니다.


PostMessage, SendMessage 차이점

두개의 차이점은 메시지 큐를 거치느냐 아니냐 하는 것입니다.

SendMessage는 메시지를 보내면 메시지 큐를 거치지 않고 직접 메시지 처리기를 호출합니다.

호출과 동시에 해당하는 메시지 처리기가 호출됩니다.

반면, PostMessage는 메시지를 메시지 큐에 넣어 주는 일만 합니다.

메시지를 보내주면 현재 수행되고 있는 함수가 완전히 끝나고, 메시지 큐에 쌓여 있던 메시지들의 처리기가 다 수행되고 난후에야 PostMessage로 보낸 메시지의 처리기가 호출됩니다.


비활성 (PostMessage)

메모장에 a키를 입력합니다.


비활성(PostMessage).ahk


키값보는프로그램.exe


메시지코드

 설명

0x100

 키를 누른다

0x101

 키를 땐다

0x200

 마우스를 이동시킨다

0x201

 마우스왼쪽 버튼을 누른다

0x202

 마우스왼쪽 버튼을 땐다

0x203

 마우스왼쪽 버튼을 두번 누른다

0x204

 마우스오른쪽 버튼을 누른다

0x205

 마우스오른쪽 버튼을 땐다

0x206

 마우스오른쪽 버튼을 두번 누른다

0x00

 WM_NULL

0x01

 WM_CREATE

0x02

 WM_DESTROY

0x03

 WM_MOVE

0x05

 WM_SIZE

0x06

 WM_ACTIVATE

0x07

 WM_SETFOCUS

0x08

 WM_KILLFOCUS

0x0A

 WM_ENABLE

0x0B

 WM_SETREDRAW

0x0C

 WM_SETTEXT

0x0D

 WM_GETTEXT

0x0E

 WM_GETTEXTLENGTH

0x0F

 WM_PAINT

0x10

 WM_CLOSE

0x11

 WM_QUERYENDSESSION

0x12

 WM_QUIT

0x13

 WM_QUERYOPEN

0x14

 WM_ERASEBKGND

0x15

 WM_SYSCOLORCHANGE

0x16

 WM_ENDSESSION

0x17

 WM_SYSTEMERROR

0x18

 WM_SHOWWINDOW

0x19

 WM_CTLCOLOR

0x1A

 WM_WININICHANGE

0x1A

 WM_SETTINGCHANGE

0x1B

 WM_DEVMODECHANGE

0x1C

 WM_ACTIVATEAPP

0x1D

 WM_FonTCHANGE

0x1E

 WM_TIMECHANGE

0x1F

 WM_CANCELMODE

0x20

 WM_SETCURSOR

0x21

 WM_MOUSEACTIVATE

0x22

 WM_CHILDACTIVATE

0x23

 WM_QUEUESYNC

0x24

 WM_GETMINMAXINFO

0x26

 WM_PAINTICON

0x27

 WM_IConERASEBKGND

0x28

 WM_NEXTDLGCTL

0x2A

 WM_SPOOLERSTATUS

0x2B

 WM_DRAWITEM

0x2C

 WM_MEASUREITEM

0x2D

 WM_DELETEITEM

0x2E

 WM_VKEYTOITEM

0x2F

 WM_CHARTOITEM

0x30

 WM_SETFonT

0x31

 WM_GETFonT

0x32

 WM_SETHOTKEY

0x33

 WM_GETHOTKEY

0x37

 WM_QUERYDRAGICON

0x39

 WM_COMPAREITEM

0x41

 WM_COMPACTING

0x46

 WM_WINDOWPOSCHANGING

0x47

 WM_WINDOWPOSCHANGED

0x48

 WM_POWER

0x4A

 WM_COPYDATA

0x4B

 WM_CANCELJOURNAL

0x4E

 WM_NOTIFY

0x50

 WM_INPUTLANGCHANGEREQUEST

0x51

 WM_INPUTLANGCHANGE

0x52

 WM_TCARD

0x53

 WM_HELP

0x54

 WM_USERCHANGED

0x55

 WM_NOTIFYFORMAT

0x7B

 WM_ConTEXTMENU

0x7C

 WM_STYLECHANGING

0x7D

 WM_STYLECHANGED

0x7E

 WM_DISPLAYCHANGE

0x7F

 WM_GETICON

0x80

 WM_SETICON

0x81

 WM_NCCREATE

0x82

 WM_NCDESTROY

0x83

 WM_NCCALCSIZE

0x84

 WM_NCHITTEST

0x85

 WM_NCPAINT

0x86

 WM_NCACTIVATE

0x87

 WM_GETDLGCODE

0xA0

 WM_NCMOUSEMOVE

0xA1

 WM_NCLBUTTonDOWN

0xA2

 WM_NCLBUTTonUP

0xA3

 WM_NCLBUTTonDBLCLK

0xA4

 WM_NCRBUTTonDOWN

0xA5

 WM_NCRBUTTonUP

0xA6

 WM_NCRBUTTonDBLCLK

0xA7

 WM_NCMBUTTonDOWN

0xA8

 WM_NCMBUTTonUP

0xA9

 WM_NCMBUTTonDBLCLK

0x102

 WM_CHAR

0x103

 WM_DEADCHAR

0x104

 WM_SYSKEYDOWN

0x105

 WM_SYSKEYUP

0x106

 WM_SYSCHAR

0x107

 WM_SYSDEADCHAR

0x108

 WM_KEYLAST

0x10D

 WM_IME_STARTCOMPOSITION

0x10E

 WM_IME_ENDCOMPOSITION

0x10F

 WM_IME_COMPOSITION

0x10F

 WM_IME_KEYLAST

0x110

 WM_INITDIALOG

0x111

 WM_COMMAND

0x112

 WM_SYSCOMMAND

0x113

 WM_TIMER

0x114

 WM_HSCROLL

0x115

 WM_VSCROLL

0x116

 WM_INITMENU

0x117

 WM_INITMENUPOPUP

0x11F

 WM_MENUSELECT

0x120

 WM_MENUCHAR

0x121

 WM_ENTERIDLE

0x132

 WM_CTLCOLORMSGBOX

0x133

 WM_CTLCOLOREDIT

0x134

 WM_CTLCOLORLISTBOX

0x135

 WM_CTLCOLORBTN

0x136

 WM_CTLCOLORDLG

0x137

 WM_CTLCOLORSCROLLBAR

0x138

 WM_CTLCOLORSTATIC

0x207

 WM_MBUTTonDOWN

0x208

 WM_MBUTTonUP

0x209

 WM_MBUTTonDBLCLK

0x20A

 WM_MOUSELAST

0x20A

 WM_MOUSEWHEEL

0x210

 WM_PARENTNOTIFY

0x211

 WM_ENTERMENULOOP

0x212

 WM_EXITMENULOOP

0x213

 WM_NEXTMENU

0x214

 WM_SIZING

0x215

 WM_CAPTURECHANGED

0x216

 WM_MOVING

0x218

 WM_POWERBROADCAST

0x219

 WM_DEVICECHANGE

0x220

 WM_MDICREATE

0x221

 WM_MDIDESTROY

0x222

 WM_MDIACTIVATE

0x223

 WM_MDIRESTORE

0x224

 WM_MDINEXT

0x225

 WM_MDIMAXIMIZE

0x226

 WM_MDITILE

0x227

 WM_MDICASCADE

0x228

 WM_MDIIConARRANGE

0x229

 WM_MDIGETACTIVE

0x230

 WM_MDISETMENU

0x231

 WM_ENTERSIZEMOVE

0x232

 WM_EXITSIZEMOVE

0x233

 WM_DROPFILES

0x234

 WM_MDIREFRESHMENU

0x281

 WM_IME_SETConTEXT

0x282

 WM_IME_NOTIFY

0x283

 WM_IME_ConTROL

0x284

 WM_IME_COMPOSITIonFULL

0x285

 WM_IME_SELECT

0x286

 WM_IME_CHAR

0x290

 WM_IME_KEYDOWN

0x291

 WM_IME_KEYUP

0x2A1

 WM_MOUSEHOVER

0x2A2

 WM_NCMOUSELEAVE

0x2A3

 WM_MOUSELEAVE

0x300

 WM_CUT

0x301

 WM_COPY

0x302

 WM_PASTE

0x303

 WM_CLEAR

0x304

 WM_UNDO

0x305

 WM_RENDERFORMAT

0x306

 WM_RENDERALLFORMATS

0x307

 WM_DESTROYCLIPBOARD

0x308

 WM_DRAWCLIPBOARD

0x309

 WM_PAINTCLIPBOARD

0x30A

 WM_VSCROLLCLIPBOARD

0x30B

 WM_SIZECLIPBOARD

0x30C

 WM_ASKCBFORMATNAME

0x30D

 WM_CHANGECBCHAIN

0x30E

 WM_HSCROLLCLIPBOARD

0x30F

 WM_QUERYNEWPALETTE

0x310

 WM_PALETTEISCHANGING

0x311

 WM_PALETTECHANGED

0x312

 WM_HOTKEY

0x317

 WM_PRINT

0x318

 WM_PRINTCLIENT

0x358

 WM_HANDHELDFIRST

0x35F

 WM_HANDHELDLAST

0x380

 WM_PENWINFIRST

0x38F

 WM_PENWINLAST

0x390

 WM_COALESCE_FIRST

0x39F

 WM_COALESCE_LAST

0x3E0

 WM_DDE_FIRST

0x3E0

 WM_DDE_INITIATE

0x3E1

 WM_DDE_TERMINATE

0x3E2

 WM_DDE_ADVISE

0x3E3

 WM_DDE_UNADVISE

0x3E4

 WM_DDE_ACK

0x3E5

 WM_DDE_DATA

0x3E6

 WM_DDE_REQUEST

0x3E7

 WM_DDE_POKE

0x3E8

 WM_DDE_EXECUTE

0x3E8

 WM_DDE_LAST

0x400

 WM_USER

0x8000

 WM_APP


메시지코드종류.txt



※ 창제목과 ClassNN 값 보는 방법

오토핫키 실행하면 작업 표시줄에 H 아이콘 생깁니다.


H 아이콘 오른쪽 마우스 클릭해서 Window Spy 들어갑니다.


창제목과 좌표, ClassNN값을 볼 수 있습니다.