autohotkey) 오토핫키에서 자주쓰는 함수모음
관련 게시물 :
AUTOhotKEY 웹페이지 열지않고 소스 가져오기 또는 로그인 하기 AUTOhotKEY 웹페이지 감시결과에 따라 마이피플로 글 전송하기 Autohotkey 엑셀(Excel)에서 행값 증가시키기 Autohotkey 30분마다 자동으로 디스크 정리하기
|
;******************** 함수모음
;변수1의 값에 010이 들어있는지 보고 뒤의 14자리를 추출하는 함수
IfInString, var1, 010
{
stringgetpos, var2, var1, 010
var2+=0
stringmid, t_result, var1, %var2%, 14
t_result1=%t_result%|
}
;산술연산에서는 %를 붙이지 않음.
;예... Var3:=Var1+Var2
;엑셀에 누락없이 붙여넣기(Ctrl+V)
E_CTRLV(BT,A)
{
SX=
CoordMode,Caret,Screen
SX=%A_CaretX%
StringLen, length, clipboard
if(length<3)
{
clipboard=내용이 없습니다.
}
loop
{
controlsend, , {ctrldown}{v}{ctrlup}, %A%
loop
{
Sleep, 10
if(A_Cursor <> "wait")
break
Sleep, 50
}
EX=
CoordMode,Caret,Screen
EX=%A_CaretX%
TX:=EX-SX
IF (TX>9)
{
break
}
send, {BS}
}
sleep, 50
}
;문자길이 알아내기
STLEN(SA)
{
StringLen, len, SA
}
;tt변수의 특정단어가 나타날때까지 무한루프
Stringexit(text,tt)
{
StringSplit, textA, text, \r
loop
{
IfInString, textA2, %tt%
{
break
}
}
}
;키보드커서좌표 %A_CaretX%, %A_CaretY% 를 X, Y로 대입
K_CSXY()
{
global
CoordMode,Caret,Screen
X=%A_CaretX%
Y=%A_CaretY%
}
;이미지 찾기, 호출은 ISearch("0혹은1", x, y, "이미지")
ISearch(bln, ByRef x,ByRef y, img)
{
Loop
{
ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, %img%
If ErrorLevel = %bln%
Break
} x += 10, y += 10
Return
}
;파일읽기(S1을 읽어서 T1변수에 저장)
F_Load(S1)
{
FileRead, T1, %S1%
}
;파일복사(S1을 T1으로 복사)
F_Save(S1,T1)
{
FileCopy, S1, T1
}
;변수 A1, A2 1:1 매칭 시키기
;A1,A2 비교후 같은 배열위치일 경우 Value로 결과물 도출
IDMatching(Na,Ni)
{
global
inputbox, uid, 작업자, 작업자를 적어주세요., 70 50
StringSplit, NNa, Na, /
StringSplit, NNi, Ni, /
Loop, %NNa0%
{
NNab := NNa%a_index%
NNib := NNi%a_index%
If (NNab = uid)
{
Value=%NNib%
}
}
}
;모래시계 상태시 대기
M_Wait()
{
loop
{
Sleep, 10
if(A_Cursor <> "wait")
break
Sleep, 50
}
}
; ;원하는 텍스트가 취득되었을때에
; WinGTS(A,Searchtext)
; {
; WinGetTitle, Title, %A%
; Ifinstring, Title, %Searchtext%
; {
; break
; }
; }
; ;웹페이지가 띄워진 창 내용을 추출하여 로딩이 완료되었는지를 확인할 수 있는 소스
; WebWait(A,Search)
; {
; WinAct(A)
; ; 새창의 윈도ID 얻기
; WinGet, wid, ID
; ; 새창을 제어할 수 있는 COM 오브젝트 얻기
; ie := IE_ComObjGet(wid)
;
; ; 이제 ie를 통해 새창을 제어한다.
;
; ; 특정 윈도ID를 가지는 IE창의 COM 오브젝트를 얻는다. 존재하지 않는다면 빈문자열을 반환한다.
; ; @param wid 윈도ID
; ; @return COM 오브젝트
;
; ;ie 오브젝트에서 한번 썻기때문에 안씀.
; ;IE_ComObjGet(wid) {
; ; For obj in ComObjCreate("Shell.Application").Windows
; ; If (ComObjType(obj, "Name") == "IWebBrowser2" && obj.HWND == wid)
; ; Return obj
; ;}
;
; loop
; {; ie 객체의 테스트를 취득하여 dnserror 오류가 없으면 result에 저장을 하며, result에 페이지 특유의 텍스트가 있는지를 비교하여 완료.
; If (!RegExMatch(ie.StatusText, "dnserror")) {
; ErrorLevel := 0
; result := ie.Document.documentElement.innerHTML
;
; } Else {
; ErrorLevel := 1
; }
; ;FileAppend, %result%, test.html
; IfInString, result, %Search%
; {
; break
; }
; }
; }
;
;색깔이 나타날때까지 대기
P_Wait(X1,Y1,X2,Y2,COLOR)
{
loop
{
sleep, 50
PixelSearch, Px, Py, X1, Y1, X2, Y2, COLOR
if ErrorLevel = 0
{
break
}
}
}
;마우스로 범위 지정 후 클립보드 저장
XYclipboard(X1,Y2,X3,Y4)
{
mouseclick, left, %X1%, %Y2%
sleep, 100
send, {shiftdown}
sleep, 100
mouseclick, left, %X3%, %Y4%
sleep, 100
send, {shiftup}
sleep, 100
send, ^c
clipwait
}
;키보드값전달
C_Send(BT,KEY,A)
{
Controlsend, %BT%, %KEY%, %A%
}
;원하는클래스확인여부
ClassSearch(CLASS,A)
{
WinGet, CList, ControlList, %A%
Loop, Parse, ActiveControlList, `n
{
IfInString, A_LoopField, CLASS
{
MsgBox, 4,, Control #%a_index% is "%A_LoopField%". Continue?
Controlnum=%a_index%
break
}
else
continue
}
}
;윈도우 id 취득
WinGetID(A)
{
id:=WinExist(%A%)
}
;윈도우 id 취득(현재창)
WinGetIDA()
{
id:=WinExist(A)
}
;윈도우 타이틀값 취득
WinGetTit(A)
{
WinGetTitle, Title, %A%
}
;윈도우 타이틀값 취득(현재창)
WinGetTitA()
{
WinGetTitle, Title, A
}
; 윈도우 텍스트 취득
WinGettxt(A)
{
WinGetText, text, %A%
}
;윈도우 활성화
WinAct(A)
{
WinActivate, %A%
WinWaitActive, %A%
}
;윈도우 활성화(지정아이디)
WinActId(id)
{
WinActivate, %id%
WinWaitActive, %id%
}
;윈도우 활성화(현재창)
WinActA(A)
{
WinActivate, A
WinWaitActive, A
}
;윈도우 버튼클릭
P_BClick(BT,A)
{
PostMessage, 0x201, 0, 0, %BT%, %A%
PostMessage, 0x202, 0, 0, %BT%, %A%
}
;윈도우 버튼클릭
S_BClick(BT,A)
{
SendMessage, 0x201, 0, 0, %BT%, %A%
SendMessage, 0x202, 0, 0, %BT%, %A%
}
;윈도우 버튼클릭
C_BClick(BT,A)
{
ControlClick, %BT%, %A%
}
;윈도우 지정위치클릭
P_XYClick(X,Y,A)
{
lParam := %X% | %Y% << 16
PostMessage, 0x201, 1, %lParam%,, %A%
PostMessage, 0x202, 1, %lParam%,, %A%
}
;윈도우 지정위치클릭
S_XYClick(X,Y,A)
{
lParam := %X% | %Y% << 16
SendMessage, 0x201, 1, %lParam%,, %A%
SendMessage, 0x202, 1, %lParam%,, %A%
}
;윈도우 지정위치클릭
C_XYClick(X,Y,A)
{
ControlClick, x%X% y%Y%, %A%
}
;윈도우 내부 명령어 실행(윈도우창열기)
CommandRun(comenu,BT,A)
{
SendMessage, 0x111, %comenu%, 0, %BT%, %A%
}
;&result 변수값 입력전달-Controlsend
ClipsendCon(BT,A,result)
{
Controlsend, BT, %result%, A
}
;&result 변수값 입력전달
Clipsend(BT,A,result)
{
SendMessage, 0x0C, 0, &result, %BT%, %A%
}
;&result 변수값 입력전달
Clipsendtt(BT,A,tt,result)
{
SendMessage, 0x0C, 0, &result, %BT%, %A%, %tt%
}
;윈도우 닫기
CloseWincomm(Toolbar, A)
{
SendMessage, WM_CLOSE, 0, 0, %Toolbar%, %A%
}
;윈도우 최소화
WinMini(A,tt)
{
; 0x112 = WM_SYSCOMMAND, 0xF020 = SC_MINIMIZE
PostMessage, 0x112, 0xF020,,, %A%, %tt%
}
;윈도우 이동
WinMove(A,X,Y)
{
WinMove, %A%,, %X%, %Y%
}
;******* Send,PostMessage KEY
WM_NULL = 0x00
WM_CREATE = 0x01
WM_DESTROY = 0x02
WM_MOVE = 0x03
WM_SIZE = 0x05
WM_ACTIVATE = 0x06
WM_SETFOCUS = 0x07
WM_KILLFOCUS = 0x08
WM_ENABLE = 0x0A
WM_SETREDRAW = 0x0B
WM_SETTEXT = 0x0C
WM_GETTEXT = 0x0D
WM_GETTEXTLENGTH = 0x0E
WM_PAINT = 0x0F
WM_CLOSE = 0x10
WM_QUERYENDSESSION = 0x11
WM_QUIT = 0x12
WM_QUERYOPEN = 0x13
WM_ERASEBKGND = 0x14
WM_SYSCOLORCHANGE = 0x15
WM_ENDSESSION = 0x16
WM_SYSTEMERROR = 0x17
WM_SHOWWINDOW = 0x18
WM_CTLCOLOR = 0x19
WM_WININICHANGE = 0x1A
WM_SETTINGCHANGE = 0x1A
WM_DEVMODECHANGE = 0x1B
WM_ACTIVATEAPP = 0x1C
WM_FONTCHANGE = 0x1D
WM_TIMECHANGE = 0x1E
WM_CANCELMODE = 0x1F
WM_SETCURSOR = 0x20
WM_MOUSEACTIVATE = 0x21
WM_CHILDACTIVATE = 0x22
WM_QUEUESYNC = 0x23
WM_GETMINMAXINFO = 0x24
WM_PAINTICON = 0x26
WM_ICONERASEBKGND = 0x27
WM_NEXTDLGCTL = 0x28
WM_SPOOLERSTATUS = 0x2A
WM_DRAWITEM = 0x2B
WM_MEASUREITEM = 0x2C
WM_DELETEITEM = 0x2D
WM_VKEYTOITEM = 0x2E
WM_CHARTOITEM = 0x2F
WM_SETFONT = 0x30
WM_GETFONT = 0x31
WM_SETHOTKEY = 0x32
WM_GETHOTKEY = 0x33
WM_QUERYDRAGICON = 0x37
WM_COMPAREITEM = 0x39
WM_COMPACTING = 0x41
WM_WINDOWPOSCHANGING = 0x46
WM_WINDOWPOSCHANGED = 0x47
WM_POWER = 0x48
WM_COPYDATA = 0x4A
WM_CANCELJOURNAL = 0x4B
WM_NOTIFY = 0x4E
WM_INPUTLANGCHANGEREQUEST = 0x50
WM_INPUTLANGCHANGE = 0x51
WM_TCARD = 0x52
WM_HELP = 0x53
WM_USERCHANGED = 0x54
WM_NOTIFYFORMAT = 0x55
WM_CONTEXTMENU = 0x7B
WM_STYLECHANGING = 0x7C
WM_STYLECHANGED = 0x7D
WM_DISPLAYCHANGE = 0x7E
WM_GETICON = 0x7F
WM_SETICON = 0x80
WM_NCCREATE = 0x81
WM_NCDESTROY = 0x82
WM_NCCALCSIZE = 0x83
WM_NCHITTEST = 0x84
WM_NCPAINT = 0x85
WM_NCACTIVATE = 0x86
WM_GETDLGCODE = 0x87
WM_NCMOUSEMOVE = 0xA0
WM_NCLBUTTONDOWN = 0xA1
WM_NCLBUTTONUP = 0xA2
WM_NCLBUTTONDBLCLK = 0xA3
WM_NCRBUTTONDOWN = 0xA4
WM_NCRBUTTONUP = 0xA5
WM_NCRBUTTONDBLCLK = 0xA6
WM_NCMBUTTONDOWN = 0xA7
WM_NCMBUTTONUP = 0xA8
WM_NCMBUTTONDBLCLK = 0xA9
WM_KEYFIRST = 0x100
WM_KEYDOWN = 0x100
WM_KEYUP = 0x101
WM_CHAR = 0x102
WM_DEADCHAR = 0x103
WM_SYSKEYDOWN = 0x104
WM_SYSKEYUP = 0x105
WM_SYSCHAR = 0x106
WM_SYSDEADCHAR = 0x107
WM_KEYLAST = 0x108
WM_IME_STARTCOMPOSITION = 0x10D
WM_IME_ENDCOMPOSITION = 0x10E
WM_IME_COMPOSITION = 0x10F
WM_IME_KEYLAST = 0x10F
WM_INITDIALOG = 0x110
WM_COMMAND = 0x111
WM_SYSCOMMAND = 0x112
WM_TIMER = 0x113
WM_HSCROLL = 0x114
WM_VSCROLL = 0x115
WM_INITMENU = 0x116
WM_INITMENUPOPUP = 0x117
WM_MENUSELECT = 0x11F
WM_MENUCHAR = 0x120
WM_ENTERIDLE = 0x121
WM_CTLCOLORMSGBOX = 0x132
WM_CTLCOLOREDIT = 0x133
WM_CTLCOLORLISTBOX = 0x134
WM_CTLCOLORBTN = 0x135
WM_CTLCOLORDLG = 0x136
WM_CTLCOLORSCROLLBAR = 0x137
WM_CTLCOLORSTATIC = 0x138
WM_MOUSEFIRST = 0x200
WM_MOUSEMOVE = 0x200
WM_LBUTTONDOWN = 0x201
WM_LBUTTONUP = 0x202
WM_LBUTTONDBLCLK = 0x203
WM_RBUTTONDOWN = 0x204
WM_RBUTTONUP = 0x205
WM_RBUTTONDBLCLK = 0x206
WM_MBUTTONDOWN = 0x207
WM_MBUTTONUP = 0x208
WM_MBUTTONDBLCLK = 0x209
WM_MOUSEWHEEL = 0x20A
WM_MOUSEHWHEEL = 0x20E
WM_PARENTNOTIFY = 0x210
WM_ENTERMENULOOP = 0x211
WM_EXITMENULOOP = 0x212
WM_NEXTMENU = 0x213
WM_SIZING = 0x214
WM_CAPTURECHANGED = 0x215
WM_MOVING = 0x216
WM_POWERBROADCAST = 0x218
WM_DEVICECHANGE = 0x219
WM_MDICREATE = 0x220
WM_MDIDESTROY = 0x221
WM_MDIACTIVATE = 0x222
WM_MDIRESTORE = 0x223
WM_MDINEXT = 0x224
WM_MDIMAXIMIZE = 0x225
WM_MDITILE = 0x226
WM_MDICASCADE = 0x227
WM_MDIICONARRANGE = 0x228
WM_MDIGETACTIVE = 0x229
WM_MDISETMENU = 0x230
WM_ENTERSIZEMOVE = 0x231
WM_EXITSIZEMOVE = 0x232
WM_DROPFILES = 0x233
WM_MDIREFRESHMENU = 0x234
WM_IME_SETCONTEXT = 0x281
WM_IME_NOTIFY = 0x282
WM_IME_CONTROL = 0x283
WM_IME_COMPOSITIONFULL = 0x284
WM_IME_SELECT = 0x285
WM_IME_CHAR = 0x286
WM_IME_KEYDOWN = 0x290
WM_IME_KEYUP = 0x291
WM_MOUSEHOVER = 0x2A1
WM_NCMOUSELEAVE = 0x2A2
WM_MOUSELEAVE = 0x2A3
WM_CUT = 0x300
WM_COPY = 0x301
WM_PASTE = 0x302
WM_CLEAR = 0x303
WM_UNDO = 0x304
WM_RENDERFORMAT = 0x305
WM_RENDERALLFORMATS = 0x306
WM_DESTROYCLIPBOARD = 0x307
WM_DRAWCLIPBOARD = 0x308
WM_PAINTCLIPBOARD = 0x309
WM_VSCROLLCLIPBOARD = 0x30A
WM_SIZECLIPBOARD = 0x30B
WM_ASKCBFORMATNAME = 0x30C
WM_CHANGECBCHAIN = 0x30D
WM_HSCROLLCLIPBOARD = 0x30E
WM_QUERYNEWPALETTE = 0x30F
WM_PALETTEISCHANGING = 0x310
WM_PALETTECHANGED = 0x311
WM_HOTKEY = 0x312
;wPARAM
IDHOT_SNAPDESKTOP = (-2)
IDHOT_SNAPWINDOW = (-1)
;iPARAM
MOD_ALT = 0x1
MOD_CONTROL = 0x2
MOD_SHIFT = 0x4
MOD_WIN = 0x8
WM_PRINT = 0x317
WM_PRINTCLIENT = 0x318
WM_HANDHELDFIRST = 0x358
WM_HANDHELDLAST = 0x35F
WM_PENWINFIRST = 0x380
WM_PENWINLAST = 0x38F
WM_COALESCE_FIRST = 0x390
WM_COALESCE_LAST = 0x39F
WM_DDE_FIRST = 0x3E0
WM_DDE_INITIATE = 0x3E0
WM_DDE_TERMINATE = 0x3E1
WM_DDE_ADVISE = 0x3E2
WM_DDE_UNADVISE = 0x3E3
WM_DDE_ACK = 0x3E4
WM_DDE_DATA = 0x3E5
WM_DDE_REQUEST = 0x3E6
WM_DDE_POKE = 0x3E7
WM_DDE_EXECUTE = 0x3E8
WM_DDE_LAST = 0x3E8
WM_USER = 0x400
WM_APP = 0x8000