● PostMessage
: 어떠한 창에 특정 값을 보내는 것이다.
https://www.autohotkey.com/docs/commands/PostMessage.htm
http://blog.naver.com/geforce_radeon/221075122591
https://www.youtube.com/watch?v=eKw5Y3GCXqs
형식)
PostMessage, Msg, wParam, lParam, Control, WinTitle
예시)
Postmessage, 0x100, 65, 1966081, Edit1, ahk_exe notepad.exe ;메모장에 a문자가 출력됨
Msg
0x100 키보드 누르기
0x101 키보드 떼기
0x200 마우스 이동
0x201 마우스 좌 클릭 누르기
0x202 마우스 좌 클릭 떼기
0x203 마우스 좌 더블클릭
0x204 마우스 우 클릭 누르기
0x205 마우스 우 클릭 떼기
0x206 마우스 우 더블클릭
65는 문자 a를 의미
1966081 ???
이 방식은 문자열을 보내는 게 아니라 모든 키를 하나씩 입력해야 돼서 아주 불편하다.
ControlSend를 사용하자
● ControlSend
: 비활성 윈도우에 키입력을 보낸다.
https://www.autohotkey.com/docs/commands/ControlSend.htm
https://ssscool.tistory.com/414
형식)
ControlSend, ClassNN, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText
;WinTitle 윈도우 타이틀 :: ahkplant.tistory.com/17
;WinText 윈도우에 포함되는 텍스트
;ExcludeTitle 제외 타이틀
;ExcludeText 제외 텍스트
ClassNN : Window Spy를 이용해서 비활성 작업을 원하는 프로그램을 선택하면, 해당하는 프로그램의 ClassNN을 볼 수 있다.
Keys : 보낼 내용
예시)
ControlSend, Edit1, 가나다라마바사, ahk_exe notepad.exe
ControlSend, , 가나다라마바사, ahk_exe notepad.exe ;메모장은 ClassNN 생략해도 된다.
특수문자 사용)
;Send, SendInput과 같다.
ControlSend, Edit1, 가나다 !@#$`%^&*() abcd {!}{@}{#}{$}{`%}{^}{&}{*}{(}{)}, ahk_exe notepad.exe
;%문자 앞에는 반드시 앞에 ` (숫자 1 앞에 있는 키임) 붙여야 한다.
결과값 : 가나다 @$%*() abcd !@#$%^&*()
;특수문자에 중괄호 처리를 하지 않으면 일부(!#&) 특수문자들이 표시되지 않는다.
ControlSend, Edit1, {Enter 5}, ahk_exe notepad.exe
결과값 : 엔터키(줄바꿈) 5번
** ControlSendRaw
SendRaw와 같다. 특수 키를 그대로 출력한다.
**PID를 사용하는 예제 스크랩
F1::
Run, notepad.exe, , , OPID1
Run, notepad.exe, , , OPID2
sleep, 500
ControlSend, Edit1, 실행, ahk_pid %OPID1%
ControlSend, Edit1, 실행, ahk_pid %OPID2%
Return
● ControlSetText
: 비활성 윈도우의 내용을 바꾼다.
https://www.autohotkey.com/docs/commands/ControlSetText.htm
http://blog.naver.com/geforce_radeon/221061620692
형식)
ControlSetText , ClassNN, NewText, WinTitle, WinText, ExcludeTitle, ExcludeText
예시)
ControlSetText, Edit1, 동해물과 백두산이, ahk_exe notepad.exe
특수문자 사용)
;SendRaw와 동일 (있는 그대로를 출력한다.)
ControlSetText, Edit1, 가나다 !@#$`%^&*() abcd {!}{@}{#}{$}{`%}{^}{&}{*}{(}{)}, ahk_exe notepad.exe
;%문자 앞에는 반드시 앞에 `를 붙여야 한다.
결과값 : 가나다 !@#$%^&*() abcd {!}{@}{#}{$}{%}{^}{&}{*}{(}{)}
;특수문자에 중괄호 처리를 하지 않아야 제대로 표시가 된다.
ControlSetText, Edit1, {Enter 5}, ahk_exe notepad.exe
결과값 : {Enter 5} ;글자 그대로 출력
#########
여러 증권사의 공동인증서(공인인증서) 로그인에 적용해보다가 알게된 내용
ControlSetText를 사용했을 때 모바일증권 나무는 로그인이 잘 되는데
삼성증권, 키움증권은 애러가 뜨고 로그인이 안되더라.
그래서 삼성증권, 키움증권만 ControlSend로 로그인 하게 만드니 잘 되더라.
##########
● ControlClick
: 비활성 윈도우를 클릭한다.
https://www.autohotkey.com/docs/commands/ControlClick.htm
https://www.youtube.com/watch?v=CGsrV9V-nLc
형식)
ControlClick [, Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText]
Control-or-Pos : ClassNN 혹은, 클릭하려는 X좌표Y좌표를 입력
예시)
ControlClick, x240 y250, ahk_exe whale.exe, , , , NA
(NA 옵션은 비활성 클릭 명령을 실행했을 때 윈도우가 활성화 되는 것을 막아준다.)
;ClassNN이 없는 웹페이지에서 ControlClick로 Focus를 주고 ControlSend로 글을 보내니깐 된다.
ControlClick, x260 y390, 윈도우 이름, , , , NA
ControlSend, , 제목입니다, 윈도우 이름
ControlClick, x150 y500, 윈도우 이름, , , , NA
ControlSend, , 내용입니다, 윈도우 이름
return
Run, cmd
WinWait, ahk_exe cmd.exe
IfWinNotActive, ahk_exe cmd.exe, , WinActivate, ahk_exe cmd.exe,
WinActivate, ahk_exe cmd.exe
ControlSend, , f:, ahk_exe cmd.exe
Sleep, 200
ControlSend, , cd python\selenium, ahk_exe cmd.exe
Sleep, 200
ControlSend, , python test.py, ahk_exe cmd.exe
;특수문자가 포함된 문자열을 입력 할 때 Send나 SendInput에서 사용하던 중괄호를 그대로 사용하면 애러가 뜬다.
userPWD := "1@`%h^e4#Zz" ;ControlSetText로 입력할 때 사용 (중괄호를 제거하고 특수문자 그대로 적어준다.)
userPWD_1 := "1{@}`%h{^}e4{#}Zz" ;Send, SendInput으로 입력할 때 사용 (특수문자 중괄호 필요)
;---------------------------------------------------------------------
;GUI 버튼으로 엑셀파일 실행
AppEX_BTN_My_BUTTON:
{
Gui, WinAppEX: Destroy ; 창을 지운다.
Run, EXCEL.EXE Z:\문서\암호_걸린_엑셀파일.xlsx, C:\Program Files (x86)\Microsoft Office\Office14
Excel_Auto_PWD_Input(userPWD)
return
}
;---------------------------------------------------------------------
; 엑셀 실행 후 암호입력하고 인증마법사 팝업창 자동으로 닫는 함수
Excel_Auto_PWD_Input(uPWD)
{
WinWait, 암호
ControlSetText, EDTBX1, %uPWD%, 암호
ControlClick, x140 y92, 암호, , , , NA
WinWait, Microsoft Office 인증 마법사
ControlClick, x480 y405, Microsoft Office 인증 마법사, , , , NA
return
}
;인증서 로그인
WinWait, 인증서
ControlSetText, Edit1, %userPWD%, 인증서
ControlClick, Button1, 인증서, , , , NA
;eBEST접속
WinWait, 종합환경설정
ControlSetText, Edit1, 1234, 종합환경설정
ControlClick, Button6, 종합환경설정, , , , NA
Sleep, 1000
ControlClick, Button1, 종합환경설정, , , , NA
run,C:\Program Files\NATEON\BIN\NateOnMain.exe
;;네이트온 실행
WinWait, NateOn,
IfWinNotActive, NateOn, , WinActivate, NateOn,
WinWaitActive, NateOn,
;; 네이트온창이 뜰때까지 기다리고 활성화시킴
ControlSetText, edit1, 메일앞주소, NateOn
Control, ChooseString, 메일뒷주소, combobox1, NateOn
ControlSetText, edit2, 비밀번호, NateOn
;; 필요한 내용 입력
ControlClick, button1, NateOn
;; 로그인버튼 클릭
https://jeayou.tistory.com/entry/ahk-네이트온-자동로그인과-controlsettext-사용방법
[오토핫키] 노트북 모니터 밝기 조절 하는 방법 메모 (0) | 2021.03.12 |
---|---|
[오토핫키] Send, SendInput에 관한 메모 (0) | 2021.03.12 |
[오토핫키] 화면끄기, 사용자전환, 절전모드, 화면밝기 조절 (0) | 2021.02.18 |
[오토핫키] 윤년 계산 / 1월1일부터 몇번째 일인지 계산 / 날짜로 변환 / 숫자 형식을 문자로 / 문자 형식을 숫자로 변환 (4) | 2021.02.13 |
[오토핫키] 대입연산자, 산술연산자, 비교연산자, 논리연산자에 대한 메모 (0) | 2021.01.10 |