끄적끄적

반응형

● 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

출처 : secretgd.tistory.com/234

 

 

● 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-사용방법

반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]