autohotkey GUI 사용법을 익히기 위해서 만들서 보았습니다.
https://www.packtpub.com/packt/offers/free-learning# 에 접속해서
등록된 계정에 로그인하여 무료 책을 신청하는 버튼을 클릭하는 프로그램입니다.
최초 exe 파일을 실행한 후 ID, PW 를 입력 후 Save 버튼을 클릭하면 txt 파일이 저장됩니다.
이 후 exe 파일을 실행하면, id.txt, pw.txt 에 저장된 내용을 읽어서 GUI 화면 없이 실행됩니다.
스케쥴 등록을 원할 경우에는, 시간을 선택한 후에 SetSchedule 버튼을 클릭합니다.
스케쥴 제거 시에는 Delete Schedule 버튼을 클릭합니다.
지정된 텍스트 파일들에, 아이디와 비밀번호가 모두 있는지 확인합니다.
FileRead, Loginname, id.txt
FileRead, Password, pw.txt
Loginname := Trim(Loginname)
Password := Trim(Password)
if (!Loginname || !Password) {
RunGUI()
}else{
RunProcess()
}
없으면 GUI를 띄우며, 있으면 프로그램을 진행합니다.
GUI 화면을 생성합니다.
Section
은 섹션 생성
xs 는 섹션에 대해서 x 줄 생성
ys 는 섹션에 대해서 y 줄 생성
xm 는 새로운 x 줄 생성
ym 는 새로운 y 줄 생성
Gui, add, text, y+10 Section, ID:
Gui, add, text, xs y+12, Password:
Gui, add, edit, vid ys Section ; The ym option starts a new column of controls.
Gui, add, edit, vpw xs Password
Gui, add, button, default ys Section gSave, Save ; The label ButtonOK (if it exists) will be run when the button is pressed.
Gui, Add, DDL, vhour w50 xm Section, 00|01|02|03|04|05|06|07|08||09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24
Gui, add, text, ys , H
Gui, add, button, default ys gSetSchedule, Set Schedule
Gui, add, button, default ys gDeleteSchedule, Delete Schedule
Gui, add, button, default ys gClose, Close
Gui, add, text, xm y+10, %msg%
Gui, show,, Get Free E-Book
파일에 내용 쓰기, 기존의 파일을 지우고, 새로 생성합니다.
Save(){
global
Gui,Submit,nohide
if !CheckValue()
return
idFile = %A_ScriptDir%\id.txt
FileDelete %idFile%
FileAppend, %id%, %idFile%
pwFile = %A_ScriptDir%\pw.txt
FileDelete %pwFile%
FileAppend, %pw%, %pwFile%
}
Gui,Submit,nohide
를 실행하여 edit 컨트롤러에 있는 값을 변수로 가져옵니다.
스케쥴 등록은 schtasks
명령어를 사용합니다.
스케쥴 이름 정의
schName = get_packet_freebook_daily
스케쥴 등록
SetSchedule(){
global
Gui, Submit, nohide
addScript = schtasks /create /tn %schName% /tr %A_ScriptFullPath% /sc DAILY /st %hour%:00:00 /f
Run %comspec% /c %addScript%
}
스케쥴 삭제
DeleteSchedule(){
global
deleteScript = schtasks /delete /tn %schName% /f
Run %comspec% /c %deleteScript%
}
웹 페이지 접속, 로그인, 버튼 클릭
RunProcess(){
URL = https://www.packtpub.com/packt/offers/free-learning#
WB := ComObjCreate("InternetExplorer.Application")
WB.Visible := True
WB.Navigate(URL)
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
Sleep, 10
wb.document.getElementById("email").value := Loginname
wb.document.getElementById("password").value := Password
wb.document.getElementById("edit-submit-1").click()
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
Sleep, 10
wb.document.querySelector("input[value^=""Claim Your Free eBook""]").click()
Close()
}
전체 소스
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#SingleInstance force
FileRead, Loginname, id.txt
FileRead, Password, pw.txt
Loginname := Trim(Loginname)
Password := Trim(Password)
if (!Loginname || !Password) {
RunGUI()
}else{
RunProcess()
}
guiClose(){
;MsgBox, CLSOED!
Close()
}
RunGUI(){
global id, pw, time
msg =
(
https://www.packtpub.com/packt/offers/free-learning# 에 접속해서
등록된 계정에 로그인하여 무료 책을 신청하는 버튼을 클릭하는 프로그램입니다.
최초 exe 파일을 실행한 후 ID, PW 를 입력 후 Save 버튼을 클릭하면 txt 파일이 저장됩니다.
이 후 exe 파일을 실행하면, id.txt, pw.txt 에 저장된 내용을 읽어서 GUI 화면 없이 실행됩니다.
스케쥴 등록을 원할 경우에는, 시간을 선택한 후에 SetSchedule 버튼을 클릭합니다.
스케쥴 제거 시에는 Delete Schedule 버튼을 클릭합니다.
문의: beneapp@gmail.com
)
Gui, add, text, y+10 Section, ID:
Gui, add, text, xs y+12, Password:
Gui, add, edit, vid ys Section ; The ym option starts a new column of controls.
Gui, add, edit, vpw xs Password
Gui, add, button, default ys Section gSave, Save ; The label ButtonOK (if it exists) will be run when the button is pressed.
Gui, add, button, default xs Section gRun, Run ; The label ButtonOK (if it exists) will be run when the button is pressed.
Gui, Add, DDL, vhour w50 xm Section, 00|01|02|03|04|05|06|07|08||09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24
Gui, add, text, ys , H
Gui, add, button, default ys gSetSchedule, Set Schedule
Gui, add, button, default ys gDeleteSchedule, Delete Schedule
Gui, add, button, default ys gClose, Close
Gui, add, text, xm y+10, %msg%
Gui, show,, Get Free E-Book
}
Run(){
global
Loginname = id
Password = pw
RunProcess()
}
schName = get_packet_freebook_daily
SetSchedule(){
global
Gui, Submit, nohide
addScript = schtasks /create /tn %schName% /tr %A_ScriptFullPath% /sc DAILY /st %hour%:00:00 /f
Run %comspec% /c %addScript%
}
DeleteSchedule(){
global
deleteScript = schtasks /delete /tn %schName% /f
Run %comspec% /c %deleteScript%
}
CheckValue(){
global
if (!id) {
MsgBox, Insert ID
return false
}
if (!pw) {
MsgBox, Insert Password
return false
}
return true
}
Save(){
global
Gui,Submit,nohide
if !CheckValue()
return
idFile = %A_ScriptDir%\id.txt
FileDelete %idFile%
FileAppend, %id%, %idFile%
pwFile = %A_ScriptDir%\pw.txt
FileDelete %pwFile%
FileAppend, %pw%, %pwFile%
}
Close(){
ExitApp
}
RunProcess(){
URL = https://www.packtpub.com/packt/offers/free-learning#
WB := ComObjCreate("InternetExplorer.Application")
WB.Visible := True
WB.Navigate(URL)
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
Sleep, 10
wb.document.getElementById("email").value := Loginname
wb.document.getElementById("password").value := Password
wb.document.getElementById("edit-submit-1").click()
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
Sleep, 10
wb.document.querySelector("input[value^=""Claim Your Free eBook""]").click()
Close()
}
'Programming > AutoHotKey' 카테고리의 다른 글
[autohotkey] xmind 입력 모드로 변경하기 (0) | 2017.05.27 |
---|---|
[ahk] packtpub.com 에서 제공하는 무료 ebook을 받기 위한 프로그램 (0) | 2016.05.22 |
사용중인 autohotkey exe 파일입니다. (0) | 2016.03.15 |
[autohotkey] PPT 작성을 위한 AutoHotkey 스크립트 (0) | 2016.01.24 |
[ahk] 하루패드 단축키 생성 (0) | 2016.01.06 |
댓글