내 소식

리자몽º [7888] · MS 2003 · 쪽지

2012-02-23 11:54:02
조회수 2,348

블다야 이거 매크로

게시글 주소: https://dev.orbi.kr/0002800226


1. 오토핫키 프로그램 다운로드 후 설치.
http://www.autohotkey.com/download/AutoHotkeyInstall.exe


2. 다음의 내용을 메모장에 붙여넣은 후 자신의 수강신청 시나리오에 맞게 과목코드를 수정한 후 saint.ahk 등의 이름으로 바탕화면에 저장. 확장자는 .ahk이어야함.
----
^!1:: Send, LCU4003-05{TAB}LCU4004-01{TAB}LCU4017-02{TAB}LCU4012-01{TAB}SPM3113-01{TAB}SHS2005-01{TAB}{ENTER}


^!2:: Send, CSE4187-01{TAB}SPM3110-01{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}


----
매크로 코드설명 :
* ---- 사이의 내용을 복사합니다(줄은 포함하지 않고). 각각 한줄에 이어져야합니다.
* LCU4003-05 등이 과목코드입니다. {TAB}은 탭이구요.
* "과목코드{TAB}" 패턴이 6번 있는 꼴입니다. 입력할 과목이 6개보다 적더라도 탭은 6번 있어야 합니다. (두번째 코드처럼)
* 위의 예제 코드에는 총 8과목이 들어있는 셈입니다.
* 저 형식을 유지하여 계속 추가하면(^!3:: 블라블라 같은 식으로), 원하는대로 단축키를 추가할 수 있습니다.
* 수강신청 메뉴의 '저장' 버튼까지 누르도록 되어 있으므로(위 코드의 각 줄의 마지막에 있는 {ENTER}가 바로 그 역할), 매크로 실행 후 따로 '저장' 버튼을 누를 필요 없음.
코드설명 끝.


3. SAINT에 미리 로그인 한 상태에서, 바탕화면의 saint.ahk 더블클릭하여 실행하여 수강신청 준비모드에 들어갑니다.


4. 10시 정각에 '수강신청' 메뉴로 이동하여 '직접 입력' 란의 첫번째 필드에 마우스를 콕 찍고, Ctrl+Alt+1 을 누르면, 첫번째 줄에 있는 과목코드가 다라락 입력됨. SAINT 서버의 처리 결과에 따라 확인 메시지가 출력될테고, 다시 입력창이 나오면 또 첫번째 필드에 마우스를 콕 찍고 Ctrl+Alt+2를 누르면 두번째 줄에 입력해놓은 코드가 다라락 입력됨. 여러가지 시나리오를 준비하는 것도 좋은 방법이겠지요.
주의: 브라우저에서의 한영 입력상태가 영문인지 꼭 확인하십시오. 매크로라는게 워낙 저수준으로 키보드나 마우스 입력 따위를 그대로 흉내내는 것이기 때문에, 한글 입력 상태에서 매크로를 돌리면 그 상태에서 키보드를 타이핑하는 것과 마찬가지로 원하는대로의 영문이 아니라 한글이 입력됩니다.


5. 미리 테스트해보세요. 메모장을 열어서, Ctrl+Alt+1 을 눌렀을때 과목코드와 탭과 엔터가 정확히 입력되면 제대로 작동하는 겁니다.


----


('자동로그인' 부분은 굳이 필요한 부분이 아닌데다가 글을 난삽하게 만들고 혼동을 주는 것 같아서 삭제했습니다. 2008/07/02 pm12:30)

----
작성후기 :
다른 사람들이 쓸 필요가 있지 않을까 하여서 오후에 알바가 좀 한가하길래 해봤습니다. 사실 전산학도 티낼 수 있는초큼 더 깔끔하고 멋진 방법을 구현하려 했으나 자바스크립트 이벤트 모델을 얕디 얕게 이해하고 있다보니 완성하질 못하고-_-;, 결국 가장 스마트하지 못하다고 생각하는(때로는 이것이 가장 효과적일 때도 있지만) 마우스/키 녹화 프로그램을 돌렸네요.

혼자 쓸려면 더 편하게, 강력하게 할 수도 있겠는데, 로그인해서 메뉴 클릭까지 하게 하는 건 사용자 환경에 따라 마우스 좌표 같은게 쉽게 달라지기 때문에 다 빼고, 가장 타임크리티컬한 부분이면서 사용자 환경에 거의 영향받지 않는 과목코드 입력부분만 매크로로 작동하게 했네요. 뭐 나름, 과목코드를 그냥 입력하려면 6과목에 30초쯤은 족히 걸릴텐데(오타없는지 확인도 하다보면 그렇고, 마우스를 쓴다면 더 오래 걸리고), 매크로는 1,2초 정도면 입력 되니까 핫타임에는 무시못할 시간의 이득이 있겠지요. 


----

오토핫키는 제가 평소에 즐겨쓰는 프로그램이긴 합니다. 나름 테스트를 통해 써왔기에 제 자신에게만 책임이 한정된다면 믿고 쓸 수 있겠다는 의미입니다. (제가 오늘 아침에 매크로를 쓰지 않은 것은, 수강신청 화면이 어떻게 구성되어있는지 알지 못했기에 미리 작성을 못한 것이고요.) 다만, 8시 정각의 수강신청 같은 상황에서(게다가 아직 충분히 경험하지 못한 시스템인 세인트에서), 다른 분이 제보하신 것처럼 번호가 밀린다는 현상이 발생하지 않을 것이라고 보장하는 것은 다른 학우들의 중요한 수강신청에 제가 질 수 없는 책임을 지겠다고 나서는 꼴이나 다름없습니다.

반쯤 믿지 못하겠다면, 매크로 코드에서 마지막 {ENTER}를 빼십시오. 매크로를 작동시킨후, 입력된 과목코드에 오류가 없는지 눈으로 확인하고 본인이 직접 엔터키를 눌렀을 때에만(포커스가 '저장' 버튼에 있으므로 코드가 올바로 입력됐다면 엔터키만으로 작동 가능) 최종적으로 저장되게 하는 것입니다. 위에 언급한 매크로라는게, 손으로 일일이 입력하는 10~30초의 시간이나마 1,2초 정도로 줄여보자는게 기본 목적이므로, 눈으로 확인하고 엔터키를 본인이 직접 누른다고 해도, 과목 코드를 일일이 입력하는 몇초의 아까운 시간은 여전히 아낄 수 있을 것입니다.


----
오늘 새벽에 달았던 사족(우려의 의견에 대한 제 생각과 글을 올린 의도)도, 글을 난삽하게 만드는 것 같아 링크만 걸어둡니다. 여기에. 
----

이해를 돕기 위해 시연영상 하나 올립니다. 오늘도 시간이 좀 남아서 시간 떼울 겸 만들어봤습니다.
수강신청 폼과 비슷한 가짜 폼을 하나 만들어놓고, 맨 위에 언급한 대로 따라가며 수행하면 어떻게 되는지 화면을 캡춰했습니다. 그냥 화면만 캡춰하고 언제 어디를 더블클릭하고 언제 단축키를 눌러야하는지 보이스 코멘트는 넣지 못했는데 그래도 대략 감을 잡을 수 있을 겁니다.
해상도가 크니까 화면속 마우스커서 따라 이리 저리 스크롤하며 되는대로;; 보셔요
[여기 클릭하면 새창으로 뜸]


----
시연영상에 썼던 테스트 폼을 다듬어서 직접 해볼 수 있도록 올립니다. (생긴건 SAINT의 메뉴랑 똑같습니다. 그 소스를 고친 것이기 때문에.)
매크로에 대한 불안감을 조금더 줄일 수 있겠군요.
키보드 입력상태를 한글로 해놓고 매크로를 실행해보시면, 위에서 주의하라고 한 현상이 무엇인지 확인할 수 있을 겁니다.
[여기 클릭하면 새창으로 뜸]

 

 

 

Ref: http://club.sogang.ac.kr/@bb/bboard.asp?db=@bbs_sogangsarang&mode=read&num=148111&page=1

 



FAQ: 사랑방에서 블로그로 글을 옮기면서 기존 질문/답변을 정리했습니다. (2008.08.07 작성)


Q: 매크로가 무엇인가요?

A: 매크로라는 말 자체가 낯선 분들도 계실텐데 여기서 말하는 매크로란, 키보드와 마우스의 일련의 움직임과 작동을 그대로 재현해주는 것을 말합니다. 자동화 툴이라고 할 수 있죠. 1,2초를 다루는 시급한 때에 일일이 키보드를 치고(오타의 위험까지 있는) 마우스 클릭하고 하는 부분을 명령으로 입력해놓고 나중에 기계가 그 명령을 재현하도록 하는 것입니다. 별로 똑똑한 방법은 아니지만, 노가다성 작업을 자동화할 때는 효과적일 수 있죠.


Q: 매크로는 신뢰할만한가요? 번호가 밀리거나 하지는 않나요?

A: 제 개인적인 용도에서라면 어느정도 신뢰하고 쓰는 프로그램이기도 하고, 또 실제 수강신청에서 이 매크로를 사용한 분들이 번호가 밀리는 현상으로 피해를 본 경우는 알려지지 않았습니다. 하지만 100% 신뢰를 장담할수는 없습니다. 이 매크로를 쓰는 것은 본인의 책임입니다. 소위 말하는 면책사항Disclaimer에 암묵적으로 동의하신 거라고 보는 겁니다.


Q: 과목코드 입력후 '저장' 버튼까지 클릭되는건가요?

A: Ctrl+Alt+1로 매크로 호출만 해주면 매크로가 '저장' 버튼까지 클릭해줍니다.


Q: 비스타에서도 되나요?

A: 제가 비스타를 쓰지 않아 직접 테스트는 못 해봤지만, 비스타에서 돌아가지 않는다는 보고도 없었습니다. 위에 링크되어 있는 테스트 페이지에서 직접 연습해보시는 것이 좋겠습니다.


Q: 매크로를 실행했는데 과목코드의 영문이 한글로 입력이 됩니다

A: 입력모드가 영문상태인지 반드시 확인하셔야 합니다. 키보드를 그냥 누르는 것과 같기 때문에, 입력모드가 한글이면 매크로 코드에 영문으로 과목코드를 입력해놓았다하더라도 한글이 입력됩니다.


Q: 7과목 신청하려고 하는데 무조건 6과목만 신청하고 그다음에 1과목은 다시 신청해야되는 건가요?

A: 그건 세인트 수강신청 시스템이 원래 그렇게 되어있기 때문에 당연히 그렇게 해야합니다. 그래서 단축키를 두개 지정해놓은 것입니다.


Q: 이상하게 한과목씩 탭작용안되구 한칸에 두개가 겹쳐서써지는데요 이건 어떻게 해야하나요?

A: 위 코드대로 매크로를 실행했는데 오작동 했을 경우, 코드의 "Send"라는 문자열을 "SendInput"으로 바꿔주십시오. 정확한 원인은 파악되진 않았습니다만 시스템 특성을 타는 듯 합니다. 그리고 사실은, 오토핫키 프로그램의 스펙에 따르면 SendInput이 Send보다 약간 더 빠르게 입력이 가능합니다. 실제로 바꿔서 해봐도 약간 더 빠르게 입력이 되고요. 하지만 일단 코드를 Send로 해서 배포하여 학우들이 사용상 검증을 거쳤기 때문에, 일말의 문제점이라도 생길 수 있어 Send를 그대로 놓아두었습니다.


Q: 저 탭란은 그냥 위의 예시처럼 {TAB}으로입력하면되나요..아니면 제가 그 란을 탭으로 띄우고 해야하나요?

A: 직접 탭으로 띄우는 것이 아니라, {TAB}라는 문자열이 정확히 들어가야 탭 역할을 합니다.


Q: 이거 쓰면 수강신청 정말 잘 될까요?

A: 이 매크로는 과목코드를 입력할 때의 오타가능성을 줄이고, 수십초의 시간을 절약하는데 목적이 있습니다. 수강신청 메뉴가 오류가 난다거나 하면 전혀 사용할 수 없습니다. 수강신청을 할 때, 정시에 자기 브라우저에 메뉴가 뜨는지가 매크로 사용보다 더 결정적인 영향을 끼칩니다. 그리고 이것은 사실 사용자가 손 쓸 수 있는 부분은 없고, 세인트가 전처럼 불안정하던 상황에서는 본인의 운이라고 할 수 밖에 없겠습니다.


 

*문의 블로그 : http://blog.theand.pe.kr/1

 

*UTCk3 시간 동기화 : 파일첨부 참고. 수강신청 서버시간이랑 컴터시간이랑 같게해 줌. (설치→실행 후 '동기'를 누르면 됨)

 

*수강신청 모의 테스트 : http://www.theand.pe.kr/sogang/saint_mock.html

 

 

^!1:: Send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}
^!2:: Send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}

 

(이거 복사해서 중간에 코드 넣기)

단축키는 Ctrl은 ^ , Alt는 ! , Shift +

 

 

* 딜레이 넣는법 (확실치 않으니 웬만하면 X)

sleep을 각 키 사이에 써주면 됩니다. 예를 들면 send, {TAB} sleep (200) send, 과목번호 이런식으로 계속 하면 중간에 슬립 부분에선 딜레이가 생깁니다(제 기억상, 정확한 부분은 오토핫키 메뉴얼에 나옵니다. 모든기능은 메뉴얼에 설명이 있으니 참조하시면 좋을듯) 참조로 숫자는 밀리세컨드 단위입니다. (0.2초)


0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.